在Visual Studio中通过中间语言(IL)和C#同时进行调试

Rap*_*sek 11 c# debugging cil visual-studio-2010

我正在寻找Visual Studio的扩展,在调试模式下,可以单步执行C#旁边的中间语言.

我不是在寻找调试托管和非托管代码的解决方案.

sev*_*tov 6

你的目的是什么?您的IL是由C#编译器生成还是在运行时动态生成?如果是前一个,你可以使用通过重新编译二进制文件的技巧ilasm.

  1. 像往常一样编译C#代码.它是否优化无关紧要,但您必须指定编译选项以生成完整的PDB符号.
  2. 使用ildasm将二进制文件转换为.il文件.它是菜单中的选项转储.
  3. 重新编译.il文件以获取新的二进制文件(和新符号)

    ilasm .il [/ exe |/dll]/debug

  4. 现在,在调试特定程序集时,您将看到IL代码而不是C#代码.如果在步骤2中选择了适当的选项,您还将看到原始C#文件中的匹配行.

对于动态生成IL的情况,我只需使用带有SOS扩展名的WinDbg.它可以转储IL并逐步执行它,但需要一点时间来习惯.