对于 C# 应用程序的小型远程调试器,作为 Visual Studio 的替代品,我都有哪些选择?

Posted

技术标签:

【中文标题】对于 C# 应用程序的小型远程调试器,作为 Visual Studio 的替代品,我都有哪些选择?【英文标题】:What are my options for a small, remote debugger for C# apps as an alternative to Visual Studio?对于 C# 应用程序的小型远程调试器,作为 Visual Studio 的替代品,我有哪些选择? 【发布时间】:2011-07-29 22:36:56 【问题描述】:

只是一个简单(也许很愚蠢)的问题:当我进行远程协助(我使用 VNC 或 TeamViewer)时,我可以使用一个简单的小型调试器工具吗?

我的 C# 应用程序已部署到我所在国家/地区的数千名客户,有时会出现一些我无法简单回复的错误。如果有一个简单的调试器,我会用它来测试特定的安装和环境,我可能会在几分钟内找到问题。

【问题讨论】:

Visual Studio Express 版本是免费的,而且相对较小 - 但我认为它们并不简单。 WinDbg?您还需要 SOS 扩展来调试托管代码。 @Cody Gray: 和相关符号,用于任何特别有用的东西。 @Dan:同意,但我认为这是给定的,因为他已经在进行远程调试。如果您认为需要多次执行此操作,则程序集应仅与 PDB 文件一起提供。 我找到了这个,看起来很有趣! CLR 托管调试器 (mdbg) 示例 link 【参考方案1】:

您可以将 Redgates Reflector 与 Deblector 一起使用。 http://reflectoraddins.codeplex.com/。但我们通常将所有未处理的异常记录到文本文件中,每当客户接近我们时,我们都会取出日志文件。并发布修复了问题的新版本。

【讨论】:

不错 - 没见过 - 必须仔细看看。好用吗? 坦率地说,我没用过 deblector。相反,我使用反射器及其文件生成器进行反向工程,它的工作完美无缺,所以我希望 deblector 也能工作。 非常有趣...我也生产大量原木,但有时还不够。 :-) 谢谢你的建议! 这似乎正是我所需要的;它使用 mdbg,正如我之前链接的那样:link。确实,我需要玩一点。 :-)【参考方案2】:

我想不出一个小的替代调试器可以让您像 Visual Studio 那样单步运行代码。

但是,您始终可以创建一个转储文件,该文件将为您提供整个进程的快照,包括所有线程和堆栈跟踪等。在较新版本的 Windows 中,这就像右键单击进程一样简单在任务管理器中选择“创建转储文件”。

一旦你有了这个,你把它带到你的本地开发盒,运行带有 SOS 的 WinDbg,你就可以全面了解发生了什么。

Tess Ferrandez 写了一些很棒的初学者实验室来帮助人们开始做这类事情。

【讨论】:

您不需要转储,也可以使用 WinDbg 和 SOS 附加到实时进程。 确实 - 我的想法是(在远程客户端的机器上)不需要 WinDbg/SOS 可能更容易,但将转储文件拉回开发工作站。 谢谢 Rob,我不知道这种可能性。我从来没有用过WinDbg,我肯定需要掌握一些使用它的技能。 :-) 没问题费迪南多 - 我很高兴。我会推荐 Tess 的实验室作为一个很好的起点。【参考方案3】:

对于 2.0,有一个核心框架调试器 - http://msdn.microsoft.com/en-us/library/7zxbks7z(VS.80).aspx - 从框架 1.1 开始我就没有亲自使用过!

在 4.0 中似乎有这个命令行调试器 - http://msdn.microsoft.com/en-us/library/dd233107.aspx - 并且它的源代码似乎可用 - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ce94e626-c43d-419c-8538-173f6a042ef5 - 看起来是一个有趣的项目。

【讨论】:

【参考方案4】:

没有符号和源文件,你不会走得太远。如果没有这些东西,调试器不会为您提供太多有用的信息,而且对于可能非常麻烦的大型应用程序。

一个更有可能有用的解决方案是实现某种日志/转储收集,以便您可以将有用的信息带回您的机器进行分析。

另外,VS 远程调试器允许您通过网络将 VS 调试器附加到远程计算机,但是在慢速 Internet 类型的连接上使用这会非常痛苦。

【讨论】:

是的,连接到远程机器对我来说非常困难,而且很痛苦。你说我需要源代码来逐步调试我想要调试的代码:我之前没有考虑过,实际上……它会比我希望的要复杂。 :-S 谢谢! 即使没有 pdb 文件或源代码,您也可以看到调用堆栈,包括方法和类名、查看局部变量、检查堆栈、设置断点等。所有这些信息始终在托管程序集中。

以上是关于对于 C# 应用程序的小型远程调试器,作为 Visual Studio 的替代品,我都有哪些选择?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 无法注册 URL(远程调试)

idea远程调试

C# 远程调试器 - 无法找到或打开 PDB 文件

VS2010远程调试C#应用

使用远程 IIS 调试 ASP.NET 应用程序

Idea IntelliJ远程调试教程