我有一个运行大约一个小时后锁定的 .net 应用程序。我希望对其线程进行尸检以找出每个线程处于什么状态。问题是在附加调试器(MSVC12)之后,没有明显的方法可以获得人类可读的堆栈跟踪。该应用程序是使用外部测试工具启动的,因此我无法在调试器中轻松启动它。
我创建了目录 c:/symbols,将 _NT_SYMBOL_PATH 设置为 Srv*c:\symbols* http://msdl.microsoft.com/download/symbols,并在 Tools/Options/Debugging/Symbols 中检查了“环境变量”和勾选“Microsoft 服务器”。
pdb 与可执行文件位于同一目录中,但我也使用 symstore 存储在 c:/symbols 中(虽然我仍在 W7 上,但它似乎是 W8 SDK 附带的)。在 c:/symbols 中有一个新创建的子目录,尽管 symstore 说它找到了一个 ID (0000001) 然后存储了 0 个文件(它还说有 0 个错误和 0 个被忽略的文件)。
我得到的堆栈跟踪往往相当短,有些看起来相同(可能是空闲线程?),例如
ntdll.dll!0000000076ff137a() Unknown
KernelBase.dll!000007fefd071a7a() Unknown
kernel32.dll!0000000076d91559() Unknown
mscorlib.ni.dll!000007fef171e9e2() Unknown
mscorlib.ni.dll!000007fef12935f8() Unknown
0000000008e20298() Unknown
mscorlib.ni.dll!000007fef12935f8() Unknown
00000000572fd470() Unknown
提前谢谢了。