轻量级的.NET调试器?

时间:2008-10-02 17:47:46

标签: .net debugging

我经常需要在测试机器上调试.NET二进制文件(通过测试机器,我的意思是机器上没有安装Visual Studio,它经常重新成像,它与我做的机器不一样发展等)。

我喜欢Visual Studio调试器,但是对于我来说,在新映像的测试机器上安装可视化工作室只是为了调试断言或崩溃(安装时间太长,占用空间太大等)是不实际的。 。

我真的很喜欢快速安装的程序,它可能会破坏正在运行的进程,让我指定符号/源代码的位置,让我直接进入调试阶段。对于原生二进制文件,windbg工作得很好,但是我没有找到任何类似于托管二进制文件的东西。有什么建议吗?

(作为旁注,我知道视觉工作室的远程调试功能,但由于某种原因,它似乎永远不会对我一致......我经常有连接问题)

8 个答案:

答案 0 :(得分:9)

对于比MDbg或cordbg更好的接口,请看一下DbgCLR - 一个只处理托管代码的Visual Studio调试器的缩减版本(至少看起来像一个)。它附带了.NET Framework(我不确定它是否在运行时或者您是否需要Framework SDK):

请注意,不推荐使用cordbg以支持MDbg(即使MDbg没有所有cordbg的功能):

回顾编写这篇文章的MDbg,我发现有一个可用于MDbg的GUI包装器(我还没试过):

答案 1 :(得分:5)

我终于找到了Windbg的扩展,它正是我想要的:Sosex.dll,让我使用windbg调试托管应用程序,只需要很少的安装。我已经使用了一年多了,而且我遇到过的每一个调试场景都没有错误。

答案 2 :(得分:4)

始终有mdbgcordbg,但我建议深入研究为什么远程调试不能始终如一地工作。

VS2005 / 8似乎比这里的早期版本更可靠(尽管我主要是不受管理的),它使你不必在目标机器上访问符号。

答案 3 :(得分:3)

ILSpy的第2版包含调试器。它很棒!

现在还处于早期阶段,但已经多次帮助了我。

请注意错误! :)

答案 4 :(得分:3)

使用 dnSpy

dnSpy是调试器和.NET程序集编辑器。即使没有可用的源代码,也可以使用它来编辑和调试程序集。

太好了。非常小巧轻便。无需安装或配置。 它的界面与Visual Studio完全一样。甚至其快捷方式也与VS相同。

功能:

调试器

  • 调试.NET Framework,.NET Core和Unity游戏程序集,不需要源代码
  • 设置断点并进入任何程序集
  • 本地化,观看,自动运行Windows
  • 变量窗口支持将变量(例如,解密的字节数组)保存到磁盘或在十六进制编辑器(内存窗口)中查看它们
  • 对象ID
  • 可以同时调试多个进程
  • 模块加载中断
  • 跟踪点和条件断点
  • 导出/导入断点和跟踪点
  • 调用堆栈,线程,模块,进程窗口
  • 打破引发异常(第一次机会)
  • 变量窗口支持评估C#/ Visual Basic表达式
  • 可以调试动态模块(但由于CLR限制,不能调试动态方法)
  • “输出”窗口记录各种调试事件,默认情况下显示时间戳:)
  • 在运行时自行解密的程序集可以进行调试,dnSpy将使用内存映像。您还可以强制dnSpy始终使用内存映像而不是磁盘文件。
  • 公共API,您可以编写扩展名或使用C#Interactive窗口来控制调试器

程序集编辑器

  • 所有元数据都可以编辑
  • 使用IntelliSense在C#或Visual Basic中编辑方法和类,不需要源代码
  • 在C#或Visual Basic中添加新的方法,类或成员
  • 用于低级IL方法主体编辑的IL编辑器
  • 可以编辑低级元数据表。这在内部使用了十六进制编辑器。

十六进制编辑器

  • 单击反编译代码中的地址,以在十六进制编辑器中转到其IL代码
  • 与上述相反,在十六进制编辑器的IL主体中按F12键转到反编译的代码或其他高级位表示。找出修补程序修改了哪个语句非常好。
  • 突出显示.NET元数据结构和PE结构
  • 工具提示显示有关所选.NET元数据/ PE字段的更多信息
  • 转到位置,文件,RVA
  • 转到.NET元数据令牌,方法主体,#Blob / #Strings / #US堆偏移量或#GUID堆索引
  • 遵循参考(Ctrl + F12)

其他

  • BAML反编译器
  • 蓝色,浅色和深色主题(以及深色高对比度主题)
  • 书签
  • C#交互式窗口可用于编写dnSpy脚本
  • 在程序集中搜索类,方法,字符串等
  • 分析类和方法的用法,查找调用者等
  • 多个标签和标签组
  • 参考文献突出显示,使用Tab / Shift + Tab移至下一个参考文献
  • 转到入口点和模块初始化程序命令
  • 转到元数据令牌或元数据行命令
  • 代码工具提示(C#和Visual Basic)
  • 导出到项目

答案 5 :(得分:1)

您可以查看MDbg:http://blogs.msdn.com/jmstall/archive/2006/11/22/mdbg-sample-2-1.aspx。看起来它至少带有.NET 3.5 SDK(它可能包含在2.0 +中)。

Windbg有托管扩展(我相信称为SOS),但我不知道它们是否允许源级调试。

答案 6 :(得分:1)

您是否尝试过使用Cracked.NET

这是一个运行时调试和脚本工具,可让您访问计算机上运行的任何.NET桌面应用程序的内部。

答案 7 :(得分:0)

也许您可以尝试将Live TuningOcf Server结合使用?

它本身不是调试器,但在应用和实时调整之间建立连接非常容易。就像,字面上3行代码。然后,您可以访问您选择发布的所有变量。

我发现在尝试调试我的程序时没有访问反编译代码或真正的调试器时它很有用。你可以真正拥有断点,但事实证明它有时候是更好的调试方法。