WinDbg / SOS:当遇到断点时,是否可以突出显示托管代码中的源代码行?

时间:2016-07-22 05:07:48

标签: c# .net debugging windbg sos

我是WinDbg的新手。我正在尝试使用它来调试CoreCLR中的the mscorlib source code,但我似乎遇到了一些问题,让SOS突出显示C#代码的源代码行(就像WinDbg对C / C ++代码一样)。

以下是我到目前为止采取的步骤(我正在尝试调试string.IndexOf(char, int, int)函数here):

0.克隆CoreCLR并通过build skiptests release

构建仓库
  1. 打开WinDbg并运行corerun MyNetCoreApp.exe

    1. 符号文件将位于coreclr\bin\Product\Windows_NT.x64.Release\PDB
  2. bp /1 coreclr!EEStartup ".loadby sos coreclr"EEStartup处中断并加载SOS扩展程序

  3. bp /1 @$ra; gEEStartup方法的末尾设置断点并运行,通过该断点,所有内容都应该被初始化/ mscorlib将被加载并且SOS命令将起作用

  4. !name2ee System_Private_CoreLib_ni!System.String 1 获取EEClass地址,!dumpclass显示MethodTable地址,!dumpmt -md列出String中的所有方法以及他们的地址。

  5. !bpmd -md 00007ffd7d039618(方法的MethodDesc)在开始时设置断点

  6. 不幸的是,当我点击托管断点时,看起来WinDbg不会立即为我打开文件,或突出显示断点,就像使用C / C ++一样。即使我通过.open在编辑器中打开文件并导航到该文件,也不会突出显示任何内容。我认为WinDbg应该接受PDB符号,因为当我执行lm时,System_Private_CoreLib_ni 1 被列为(pdb symbols)下一个模块它。

    也许我为了一个repro提供了一些不必要的信息,但是有可能用托管代码/ SOS和WinDbg突出显示源文件中的断点吗?感谢。

    1 mscorlib最近已在.NET Core中重命名为System.Private.CoreLib。 ni是预先制作的原生图像集。

0 个答案:

没有答案