为每个运行的线程转储StackTrace

时间:2011-02-01 20:16:13

标签: c# .net vb.net

在发生异常时,有没有办法在.NET(VB.NET或C#)中转储每个线程的堆栈跟踪?基本上我想重现Visual Studio的Debug-> Threads窗口中发生的事情,看看发生异常时每个线程正在做什么

2 个答案:

答案 0 :(得分:7)

如果您想获取托管代码中所有线程的堆栈跟踪,那么您可以尝试mdbg。看看Managed Stack Explorer它确实使用了mdbg并获取了所有线程的堆栈。

答案 1 :(得分:1)

之前已经在StackOverflow(如herehere)和其他论坛上提出了类似的问题。那些早期的讨论集中在获取所有正在运行的线程的列表,但如果你有这些信息,那么获取每个线程的堆栈跟踪将是微不足道的。

一致的结论是,在.NET中没有办法做到这一点,并且您需要查看基于调试API构建的外部工具,如上面提到的示例Naveen。