本文主要是介绍通过windbg查看dump文件中某个方法内的某个对象的变量的值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用 WinDbg 和 SOS 扩展来查看 C# 应用程序生成的 dump 文件中某个方法中的某个对象的变量的值。以下是大致的步骤:
-
打开 WinDbg,并用它打开你的 dump 文件。你可以使用 File → Open Crash Dump 来实现。
-
在命令行中,加载 SOS 扩展。一般来说这可以通过
.loadby sos clr
来完成。如果这个不工作的话,你可能需要全路径来加载 SOS.dll,这可能在类似于"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll"
这样的地方找得到。 -
使用
!clrstack
命令查看当前线程的调用堆栈。这将列出当前线程调用的所有方法。 -
找到你想要查看的方法,并记录下方法的地址。
-
使用
!dumpmd <MethodDesc 地址>
命令查看方法的元数据信息,这里替换<MethodDesc 地址>
为你从上一步得到的方法地址。这将列出方法的所有局部变量和参数。 -
使用
!ip2md <方法地址>
命令查看方法的 MethodDesc 结构,这里替换<方法地址>
为你从上一步得到的方法地址。这将列出方法的 MethodDesc 结构,包括方法的代码地址和局部变量/参数的地址。 -
使用
!dumplog
命令查看方法的局部变量/参数的值。这将列出方法的所有局部变量/参数的值,以及它们的地址。 -
找到你想要查看的对象的地址,并使用
!do <地址>
命令查看对象的详细信息,包括对象的变量的值。这里替换<地址>
为你从上一步得到的对象地址。
注意:这个方法只对方法中的局部变量和参数有效。如果你的变量是在对象中的,你需要知道哪个对象引用了它,然后用 !dumpheap -type
和 !do
来找到它。
这篇关于通过windbg查看dump文件中某个方法内的某个对象的变量的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!