我正在调试WinDbg/SOS的mscorlib 的源代码。我很好奇,如果你在汇编中看到它的地址,是否有可能得到托管函数的名字?例如,这是一些我看到的反汇编窗口代码:如何从SOS中的jitted输出获取托管函数名称?
00007ffd`7f035d7c 488d0d3d3af5ff lea rcx,[System_Private_CoreLib_ni+0x8797c0 (00007ffd`7ef897c0)]
00007ffd`7f035d83 e890728eff call System_Private_CoreLib_ni+0x20d018 (00007ffd`7e91d018)
00007ffd`7f035d88 488bf0 mov rsi,rax
00007ffd`7f035d8b b9874a0000 mov ecx,4A87h
00007ffd`7f035d90 e8834a91ff call System_Private_CoreLib_ni+0x23a818 (00007ffd`7e94a818)
00007ffd`7f035d95 488bc8 mov rcx,rax
00007ffd`7f035d98 e87356b9ff call System_Private_CoreLib_ni+0x4bb410 (00007ffd`7ebcb410)
00007ffd`7f035d9d 488bd0 mov rdx,rax
00007ffd`7f035da0 488bce mov rcx,rsi
00007ffd`7f035da3 e8e89fbdff call System_Private_CoreLib_ni+0x4ffd90 (00007ffd`7ec0fd90)
我想找出一些这些功能是call
-ed的名称。我想,要使用的命令因为这将是!dumpmd
,但没有这些命令似乎工作:
!dumpmd 0x20d018
!dumpmd e890728eff
!dumpmd 00007ffd`7e91d018
他们都用“......是不是一个方法描述”作出回应。那么怎样才能从程序集中获得托管函数的名称,或者这是不可能的?
的mscorlib最近更名为System.Private.CoreLib
.NET的核心,所以这就是为什么你看到的那个,而不是mscorlib_ni
。