我用的是cdb和sosex分机。一切似乎都很好,除了我无法得到任何!mbp断点来解决和!mu/!muf不显示源信息。
执行了以下命令:
.lines
sxe ld:clrjit
g
.loadby sos clr
.cordll -ve -u -l
.load c:\blah\sosex.dll
sxe ld:myassembly.dll
ld myassembly
!mbm myassembly!myfunction
g然后,它击中了我感兴趣的函数,并中断了。但是!mu不显示任何源信息,只显示IL和本地信息。
我通过以下操作验证了这些符号(包括源行信息)的加载:
? `myassembly!c:\blah\whatevs.cs:20`打印出正确的偏移量。
SOSEX版本是stevestechspot的最新版本。在.NET框架4.7.3下运行。cdb和sosex均为x64。
源文件位置与PDB文件中的位置匹配。
更新
SOS也有同样的问题。IP2MD没有显示源行。
发布于 2018-12-21 19:14:38
我通过sos.dll进行了调试,它正确地将本机地址转换为IL地址,并将得到的IL地址传递给dbgeng中的函数DebugClient::GetLineByOffset()。但是,这返回了E_FAIL,从反汇编中看,它似乎是硬编码的。
因此,看起来SOS依赖于调试器引擎中不再实现的东西来从IL偏移量中获取源行。
被告知将其报告为WDK问题-在此提出:https://social.msdn.microsoft.com/Forums/en-US/2f9d4bbe-8322-4e8d-883a-e40d19f21209/sos-debugger-extension-for-windbg-cant-find-source-lines?forum=wdk
https://stackoverflow.com/questions/53875300
复制相似问题