我经常需要在测试机器上调试.NET二进制文件(通过测试机器,我的意思是机器上没有安装Visual Studio,它经常重新映像,它与我开发的机器不同,等等)。
我喜欢Visual Studio调试器,但是对于我来说,在新映像的测试机器上安装可视化工作室只是为了调试断言或崩溃(安装时间太长,占用空间太大等)并不实用。
我真的很喜欢一个快速安装的程序,它可以进入一个正在运行的进程,让我指定符号/源代码的位置,让我直接进入调试。对于原生二进制文件,windbg工作得很好,但是我没有找到任何类似于托管二进制文件的东西。有什么建议?
(作为旁注,我知道视觉工作室远程调试功能,但由于某种原因,它似乎永远不会对我一致...我经常有连接问题)
对于比MDbg或cordbg更好的界面,请看一下DbgCLR - 一个只处理托管代码的Visual Studio调试器(至少看起来像一个)的简化版本。它附带了.NET Framework(我不确定它是否在运行时或者您是否需要Framework SDK):
请注意,不推荐使用cordbg以支持MDbg(即使MDbg没有所有cordbg的功能):
在写这篇文章时回顾MDbg,我发现有一个可用于MDbg的GUI包装器(我还没试过):
我终于找到了Windbg的扩展,它正是我想要的:Sosex.dll,让我使用windbg调试托管应用程序,只需要很少的安装。我已经使用了一年多了,而且我遇到过的每一个调试场景都没有错误。
使用dnSpy。
dnSpy是一个调试器和.NET组装编辑器。即使您没有任何可用的源代码,也可以使用它来编辑和调试程序集。
太棒了。非常小巧轻便。无需安装或配置。它的界面与Visual Studio完全相同。甚至它的快捷方式也与VS相同。
特征:
你尝试过使用Cracked.NET吗?
它是一个运行时调试和脚本工具,使您可以访问计算机上运行的任何.NET桌面应用程序的内部。
你可以查看MDbg:http://blogs.msdn.com/jmstall/archive/2006/11/22/mdbg-sample-2-1.aspx。看起来它至少带有.NET 3.5 SDK(它可能包含在2.0+中)。
Windbg有托管扩展(我相信称为SOS),但我不知道它们是否允许源级调试。
也许你可以尝试使用Live Tuning结合Ocf Server?
它本身不是调试器,但在应用程序和实时调整之间建立连接非常容易。就像,字面上3行代码。然后,您可以访问您选择发布的所有变量。
我发现在尝试调试程序时没有访问反编译代码或真正的调试器时它很有用。你不可能真的有断点但事实证明有时候更好的调试方法。