轻量级的.NET调试器?

bra*_*rad 24 .net debugging

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

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

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

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

Mic*_*urr 9

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

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

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

  • 更新:MDBG 4.0示例已发布到http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ce94e626-c43d-419c-8538-173f6a042ef5谢谢,Aaron (2认同)

Mah*_*vcs 9

使用dnSpy

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

真是太棒了。非常小巧轻便。无需安装或配置。它的界面与 Visual Studio 完全一样。连它的快捷键都和VS一样。

特征:

调试器

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

装配编辑器

  • 所有元数据都可以编辑
  • 使用 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)
  • 导出到项目


bra*_*rad 5

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