通过windbg查看dump文件中静态变量的值

可以使用 WinDbg 和 SOS 扩展来查看它们。下面是如何使用 WinDbg 和 SOS 的步骤:

  1. 打开 WinDbg,并用它打开你的 dump 文件。你可以使用 File → Open Crash Dump 来实现。

  2. 在命令行中,加载 SOS 扩展。一般来说这可以通过 .loadby sos clr 来完成。如果这个不工作的话,你可能需要全路径来加载 SOS.dll,这可能在类似于 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll" 这样的地方找得到。

  3. 接下来,我们要找到你全局变量所在的类的 MethodTable 结构。你可以使用 !dumpheap -type <YourTypeName> 来找到你的类型,替换 <YourTypeName> 为你的全局变量类型的全名(包括命名空间)。这将列出所有该类型的实例,以及它们的 MethodTable 地址。

  4. !dumpmt -md <MethodTable 地址> 来查看关于这个类的信息,这里替换 <MethodTable地址> 为你从上一步得到的地址。这将列出类的所有方法,以及所有静态字段/全局变量及其地址。

  5. 最后,用 !do <地址> 来查看你的全局变量当前的值。这里替换 <地址> 为你在上一步中获得的地址。

注意:这个方法只对静态字段/全局变量有效。如果你的字段不是静态的,你需要知道哪个对象引用了它,然后用 !dumpheap -type!do 来找到它。

相关推荐
蓑衣夜行2 天前
捉虫笔记(五)-WinDbg调试3个时机
windbg·捉虫笔记
zhuqiyua3 天前
深入解析Kernel32.dll与Msvcrt.dll
汇编·microsoft·windbg·二进制·dll
可均可可2 个月前
Advanced .Net Debugging 11:完结篇
windbg·sos·net 高级调试·ntsd
鬼才2 个月前
记一次 公司.NET项目部署在Linux环境压测时 内存暴涨分析
windbg·dump
可均可可5 个月前
Advanced .Net Debugging 10:事后调试
windbg·任务管理器·dump·ntsd·事后调试