如何监控CLR中的堆栈状态?

时间:2014-06-28 18:02:57

标签: c# debugging clr

实际上,问题在标题中。

例如,我可以使用!dso提供的命令SOS.dll监视调试会话期间引用我的引用类型的行为。我的问题是如何在调试会话期间监视堆栈在定义的时刻包含哪些对象(包括引用和值类型)?是否有针对此类需求的调试工具?

1 个答案:

答案 0 :(得分:1)

如果您已连接并且已加载SOS扩展,则命令!clrstack -p(包含在SOS中)将显示该线程的当前托管堆栈(带参数)。你可以运行〜* e!clrstack来转储所有线程的堆栈。

您也可以考虑加载psscor2(.net 2.0 / 3.0 / 3.5)/ psscor4(.net 4.0)扩展 - 它具有SOS以外的其他功能。

PSSCOR2可以在这里下载:

http://www.microsoft.com/en-us/download/details.aspx?id=1073

PSSCOR4可在此处获取:

http://www.microsoft.com/en-us/download/details.aspx?id=21255

这篇博文有一篇很好的介绍psscor2(psscor4如果你正在运行.net 4.0):

http://blogs.msdn.com/b/kaevans/archive/2011/04/11/intro-to-windbg-for-net-developers.aspx