【发布时间】:2012-12-30 14:39:00
【问题描述】:
我很久以前在 dll 中(在 Windows 上)编写了一个 C++ 函数...... 有些人写了 api ,使用函数指针调用我的函数,有些人只是调用它..
我想知道谁是我的函数的调用者(代码路径)。我想分析调用我函数的每个 api 的堆栈。
有什么方法可以让我轻松做到这一点。我的意思是当我查找调用者(代码路径)时,由于函数指针的方式,我基本上必须手动做很多工作。所以如果有任何相同的开源解决方案,请分享..
我不希望自己使用断点或编写函数来显示堆栈。原因是因为这类似于如果调用路径被击中,它会显示在我的结果中..但是如果调用路径没有被击中,那会怎样?所以我会知道只有当函数 X 被调用时才会调用我的函数 X ;但并非总是如此
【问题讨论】:
-
您需要哪个操作系统?
-
windows(以及编辑过的问题)谢谢 :)
-
@MAG 你的用例是什么?为什么不直接设置断点并使用调试器向您显示调用堆栈?在 Windows 上,您可以在加载 dll 的 exe 上启动调试器,并且仍然会捕获 dll 中的任何断点。
-
还要处理函数指针吗?
-
@MAG 不,正如我在评论中所说,静态分析器也几乎/几乎不可能跟踪函数指针。
标签: c++ function pointers stack