SOS/SOSEX 缺少源代码信息

Source code information missing with SOS/SOSEX

我正在使用带有 sosex 扩展名的 cdb。一切似乎都工作正常,除了我无法获得任何 !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 Framework 4.7.3。 cdb 和 sosex 都是 x64。

机器上的源文件位置与 PDB 文件中的位置匹配。

更新

SOS 也有同样的问题。 IP2MD 不显示源代码行。

我通过 sos.dll 调试,它正确地将本机地址转换为 IL 地址,并将生成的 IL 地址传递给 dbgeng 中的函数 DebugClient::GetLineByOffset()。然而,这返回了 E_FAIL,从反汇编看来,它似乎是硬编码的。

所以看起来 SOS 依赖于调试器引擎中不再实现的东西来从 IL 偏移量中获取源代码行。

报告:https://developercommunity.visualstudio.com/content/problem/414350/sos-debugger-extension-for-windbg-cant-find-source.html

被告知将其报告为 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