在每一行执行之后是否能够看到堆栈和堆的内容?我想看到这些内容,因为它会清楚地说明.Net中的内存分配和释放。如果有任何文件或链接可以澄清我的疑虑,请分享。
在每一行执行之后是否能够看到堆栈和堆的内容?我想看到这些内容,因为它会清楚地说明.Net中的内存分配和释放。如果有任何文件或链接可以澄清我的疑虑,请分享。
SOS或PssCor是一个不错的起点,同时还有WinDbg。
一旦你解决了这个问题;将WinDbg附加到你的进程上,加载调试器扩展。例如:
.load C:\pathtoextensions\psscor4.dll
之后,您可以使用!dumpheap
或!dumpstack
命令。
这两个命令的输出非常原始。 !dumpheap -stat
将为您提供堆的“统计”概述。类型、已分配数量以及所有分配的总字节数。
这不是一个超级简单的任务。如果您以前没有使用过它,那么需要一段时间才能练习足够的WinDbg技巧。
您可以使用!bpmd
在方法上设置断点,然后使用上述命令,使用p
命令跳过,然后重新运行命令。
堆栈:
var stackInfo = new StackTrace();
dotnet-dump
工具来检查堆栈:
dotnet tool install --global dotnet-dump
dotnet-dump collect [-h|--help] [-p|--process-id] [-n|--name] [--type] [-o|--output] [--diag]