我怎么能看到堆里面的物体&堆叠在C#.Net中

时间:2011-09-25 17:45:30

标签: c# .net stack heap

是否可以在每行执行后查看堆栈和堆的内容。我希望看到它,因为它会清楚地了解.Net中的内存分配和释放。用你的

如果有任何文件或链接可以解答我的疑问,请分享。

2 个答案:

答案 0 :(得分:3)

堆栈:

var stackInfo = new StackTrace();

堆?不,您需要使用分析器,调试器或适当的API。不是一个简单的任务。如果你尝试并遇到困难,最好问一个更具体的问题。

答案 1 :(得分:3)

SOS或PssCor是一个好的起点,WinDbg旁边。

一旦你解决了这个问题;将WinDbg附加到您的进程,加载调试器扩展。例如:

.load C:\pathtoextensions\psscor4.dll

之后,您可以发出!dumpheap!dumpstack命令。

这两个命令的输出非常原始。 !dumpheap -stat将为您提供堆的“统计”概述。所有分配的类型,分配的数量和总计的字节数。

这不是一项非常简单的任务。如果您之前没有使用它,那么使用WinDbg需要一段时间才能获得足够的练习。

您可以做的是使用!bpmd在方法上设置断点,并使用上面提到的命令,然后使用p命令跳过,并重新运行命令。

我确信还有其他商业工具,例如ANTS ProfilerdotTrace可以完成工作 - 但我对这两种工具都没有很多经验。

一旦你开始,你可以询问(新)有关SOS或Psscor的更具体的问题。