当我使用下面的命令来显示堆栈时,我只是获取了十六进制地址,即使加载了模块(使用命令lm m xx
检查):
0:014> k
Child-SP RetAddr Call Site
00000000`88f9b0e0 00000000`305e8a60 0x36f038d
00000000`88f9b0e8 00000000`305e8a60 0x305e8a60
有人可以告诉我为什么吗?
答案 0 :(得分:1)
这是例如正常的.NET应用程序。中间代码是程序集/ DLL的一部分,您可以通过lm
看到它。
但是,中间代码永远不会自行执行。它在运行时由JIT编译器处理。 JIT编译器分配一些内存(在DLL之外)并在那里发出汇编代码。
由于该部分内存与DLL无关,因此WinDbg仅将其显示为十六进制地址。
要使用.NET,请加载SOS扩展并使用
之类的命令.loadby sos clr
!dumpstack
!clrstack
使用等命令或SOSEX
.load <full path to>\sosex.dll
!mk