Debugging MSIL调试器-Mdbg、Dbgclr、Cordbg

Debugging MSIL调试器-Mdbg、Dbgclr、Cordbg,debugging,cil,Debugging,Cil,我一直在做一些MSIL的工作,遇到了这三个调试器的引用 他们之间有什么区别 其中一个比其他的好吗。功能 还有其他我错过的吗 我想你是说DbgClr不是Clt,mdbg不是mdbug DbgClr使用VS外壳,因此您可以获得一个漂亮的GUI mdbg是命令行管理的调试器 cordbg是sorta提供的一个旧样本,但现在它只是mdbg的包装 Visual Studio是您错过的一个,但是DbgClr应该具有相同的功能 您还可以使用windbg和从Windows调试器执行托管调试。SOS在使用V

我一直在做一些MSIL的工作,遇到了这三个调试器的引用

  • 他们之间有什么区别

  • 其中一个比其他的好吗。功能

  • 还有其他我错过的吗


我想你是说DbgClr不是Clt,mdbg不是mdbug

  • DbgClr使用VS外壳,因此您可以获得一个漂亮的GUI
  • mdbg是命令行管理的调试器
  • cordbg是sorta提供的一个旧样本,但现在它只是mdbg的包装
Visual Studio是您错过的一个,但是DbgClr应该具有相同的功能

您还可以使用windbg和从Windows调试器执行托管调试。SOS在使用VS时也很有用,因为它可以让您检查内存等

要查看源代码级MSIL调试,请尝试将ilasm与/debug选项一起使用。上次我检查时,VS将允许您像C#或任何其他语言一样逐步使用.il源代码


MSDN博客中有大量关于调试.NET应用程序的内容——我建议您在那里进一步搜索。

谢谢。您是指带有/debug选项的ilasm吗?我如何使用VS逐步通过一个/il源?我在VS中加载它,但是F5和F6按钮什么都不做?哦,是的,ilasm。我相信你只是开始或依附于这个过程。VS不会生成和执行IL代码,但它会加载进程的符号,这些符号可以指向.IL。需要注意的一个重要问题是,VS调试器只会单步执行IL指令,或者允许您在“语句”级别设置断点。在IL中,语句大致是一组导致计算堆栈为空的指令。如果有“ldarg\u 0”调用Object.ToString“stloc\u 0”,则这3条指令将是一条语句。可以在“ldarg_0”指令处设置断点,但不能在“call Object.ToString”指令处设置断点。