0

我正在使用带有 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 不显示源代码行。

4

1 回答 1

0

我通过 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

于 2018-12-21T19:14:38.297 回答