0

我刚刚发现了 Sysinternal 的 Process Monitor,并且喜欢它提供的关于进程正在做什么的见解。但是,当我尝试查看对内核的软件调用的详细信息时,堆栈中充满了“未知数”。我应该如何构建我的应用程序,以便函数名称出现在堆栈跟踪中?

4

1 回答 1

2

经常用 /Zi 编译它,然后用 /debug 链接它就足够了。您应该获得一个 PDB 文件,其中包含应用程序的所有调试信息。只要您不移动可执行文件或 PDB,Process Monitor 通常应该会找到它。

如果您有多个版本的应用程序,或者如果您想调查其他机器上的调用堆栈,最好设置一个符号服务器。然后,您需要将所有 EXE 和 PDB 文件存储到符号服务器中(使用 symstore 实用程序),并设置您的系统,以便 Process Monitor 使用符号服务器来查找调试信息。http://support.microsoft.com/kb/311503上的信息应该可以帮助您入门。

一种正常工作的方法是设置环境变量_NT_SYMBOL_PATH

set _NT_SYMBOL_PATH=symsrv*symsrv.dll*\\yourserver\symbols*http://msdl.microsoft.com/download/symbols

... where\\yourserver\symbols将是可写和可读的共享,但也可以是您计算机上的本地路径。这是符号被缓存以供重复使用的地方。

于 2012-05-04T23:13:43.237 回答