C# 如何在CLR中监视堆栈状态?

C# 如何在CLR中监视堆栈状态?,c#,debugging,clr,C#,Debugging,Clr,实际上,问题在标题中 例如,我可以在调试会话期间使用命令监视引用我的引用类型的行为!dso由SOS.dll提供。我的问题是,在调试会话期间,如何监控堆栈在定义的时刻包含哪些对象(引用和值类型)?是否有任何调试util可以满足这些需求 如果您已连接并加载了SOS扩展,则该命令将生效!clrstack-p(包含在SOS中)将显示线程的当前托管堆栈(带参数)。你可以跑~*e!clrstack以转储所有线程的堆栈 您也可以考虑加载PSCOR2(.NET 2/3/3.5)/PSCOR4(.NET 4)扩展

实际上,问题在标题中


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

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

您也可以考虑加载PSCOR2(.NET 2/3/3.5)/PSCOR4(.NET 4)扩展——它在SOS中没有其他功能。p> PSSCOR2可在此处下载:

PSSCOR4可在以下位置获得:

这篇博文很好地介绍了psscor2(如果您运行的是.net 4.0,则为psscor4):