【问题标题】:How do I debug a .NET executable at MSIL-level?如何在 MSIL 级别调试 .NET 可执行文件?
【发布时间】:2010-04-12 18:36:05
【问题描述】:

我有一个需要调试的 .NET 可执行文件。我想进入它,让它在第一条指令上停止,并有一个用于单步执行、断点等的可视化界面。

这似乎应该更容易,但我还没有找到解决方案!我在网上阅读了有关DbgCLR.exe 的信息,但我无法在我的系统或网上找到该文件。我还在某处读到 DbgCLR.exe 不再需要,因为 Visual Studio 可以做同样的事情。 Visual Studio .NET 解决方案也很棒! (也许我忽略了一个菜单项?)

只要我能检查堆栈、设置断点等,任何一个都适合。

【问题讨论】:

  • 好问题。几年前我使用 NTSD 来调试 JIT-ed MSIL 代码。那真是一种快乐……看看microsoft.com/whdc/devtools/debugging,如果现在有任何更高级别的可用,请告诉我。
  • 如果你有符号和源,你可以使用VS附加到进程,并在附加对话框中指定你想要托管调试。

标签: .net debugging cil


【解决方案1】:

如果您是购买实用程序的人 - Red Gate 的新 .NET Reflector Pro 非常适合这种情况(195 美元)。我认为您可以在Red Gate's site 上获得持续一段时间的评估版

我过去曾在 IL 中使用 DILE 来执行此操作,但出于某种原因,我对 Deblector 的体验参差不齐。

可能不值得您花时间,但您也可以为 exe 创建 pdb 符号,但如果程序集有很多引用,它会变得复杂。几年前我整理了一篇关于如何做的博文:Disassembling .NET - Appendix A

【讨论】:

    【解决方案2】:

    WinDbg 可以使用,因为它会在进程启动时自动停止。但是,除非您使用 SOS.dll 和托管调试技能,否则它只会显示本机内容。所以它有一个尖锐的学习曲线。

    【讨论】:

      【解决方案3】:

      Deblector 允许您通过反射器单步 IL。

      【讨论】:

        【解决方案4】:

        您可以将可执行文件转换为 csharp (vb.net)。
        有一个很好的免费工具,.Ned Reflector。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-26
          • 2013-01-13
          • 2020-08-07
          • 2020-03-26
          • 1970-01-01
          • 2017-05-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多