如何查看在另一个程序中调用的函数[关闭]

Posted

技术标签:

【中文标题】如何查看在另一个程序中调用的函数[关闭]【英文标题】:How to see functions being called in another program [closed] 【发布时间】:2021-10-28 10:50:11 【问题描述】:

我有一个用 C/C++ 编写的 Windows 应用程序,我希望能够查看当前正在运行时执行的函数,是否可以使用某些工具?

【问题讨论】:

调试器可以做到这一点。但是如果它是别人的代码并且你没有调试信息,那么不要指望你会找到很好的可读名称。如果您自己编写了程序,则进行调试构建并在调试器中运行它 哪个调试器? 适合您所运行平台的调试器。 WinDbg - MS-Window 的独立调试器 docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… 您是否可以合法访问您的应用程序的源代码(C 或 C++)?您是否阅读过有关 C 或 C++ 编程的书籍或学习过课程?您是否可以从源代码重新编译该应用程序,或更改源代码? 【参考方案1】:

以下工具可以做到这一点

调试器 - 允许单步执行函数 Profilers - 可以显示哪些函数执行时间最长 一些监控工具:Process Explorer / Process Hacker可以实时显示一个进程的线程调用栈信息; Process Monitor 可以跟踪文件和注册表 I/O 调用

所有这些工具都依赖于调试符号。如果调试符号不可用,它们将无法显示函数名称(除非导出/导入函数,或通过公共符号服务器提供符号的系统函数)

请注意,对受版权保护的软件进行逆向工程可能是非法的;该软件还可能采取措施防止逆向工程。

【讨论】:

反汇编器/反编译器无法“查看当前正在运行时执行的函数” @fpmurphy,真实,已修复【参考方案2】:

您可以使用任何 IDE(如 vscode)来查看调用层次结构。

【讨论】:

以上是关于如何查看在另一个程序中调用的函数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何查看程序中函数间的调用关系?

Tornado-如何在另一个函数中调用处理程序

c语言中如何在一个函数中调用在另个文件中定义的函数

如何从托管 WebBrowser 控件的应用程序调用 WebBrowser 控件查看的页面中的 JavaScript 函数?

如何在另一个 defn 中调用一个 defn 函数以及如何在 Clojure 中调试

如何在另一个活动中从 uri 设置导航抽屉查看器的图像