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

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

【问题讨论】:

  • 调试器可以做到这一点。但是如果它是别人的代码并且你没有调试信息,那么不要指望你会找到很好的可读名称。如果您自己编写了程序,则进行调试构建并在调试器中运行它
  • 哪个调试器?
  • 适合您所运行平台的调试器。
  • 您是否可以合法访问您的应用程序的源代码(C 或 C++)?您是否阅读过有关 C 或 C++ 编程的书籍或学习过课程?您是否可以从源代码重新编译该应用程序,或更改源代码?

标签: c++ c windows debugging reverse-engineering


【解决方案1】:

以下工具可以做到这一点

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

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

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

【讨论】:

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

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

【讨论】: