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

本文关键字:堆栈 状态 监控 CLR | 更新日期: 2023-09-27 18:10:43

实际上,问题在标题中。

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

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

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

你也可以考虑加载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(如果你运行的是。net 4.0则是psscor4):

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