如何在Visual Studio中转储或搜索所有线程的调用堆栈

sup*_*erb 11 debugging multithreading callstack visual-studio-2005

如何在Visual Studio中转储或搜索所有线程的调用堆栈?我们有一个服务器进程要调试,它有数百个线程在运行,因此应该很难手动检查每个线程.

我知道gdb中的"thread apply"可以做这种事情.所以我想知道visual studio的调试器中有类似的东西.

我也在使用visual studio 2005,所以请为VS 2005提供解决方案(在VS 2010中提供所有调用堆栈中的搜索...).

小智 16

我也遇到了同样的问题,也是在VS2005中.我找到了一个更简单的解决方案:在调试时打开VS的命令窗口并使用命令:Debug.ListCallStack/AllThreads

我发现了这个:http: //blogs.msdn.com/b/greggm/archive/2005/08/02/446899.aspx

  • 如果你的命令窗口消失了,你可以在这里找到它:`查看 - >其他Windows - >命令窗口` (2认同)
  • `Debug.ListCallStack/ShowLineOffset/AllThreads`包括显示行号 (2认同)

sup*_*erb 5

后来我通过使用WinDbg找到了答案,

首先在VS调试会话中保存一个小型转储,例如myapp.dmp

然后使用以下命令将所有调用堆栈转储到out.txt

cdb -zc:\ myapp.dmp -logo out.txt -lines -c“〜* kb; q” -yc:\ symbols