使用Windows调试工具调试.NET 2.0 Winforms应用程序

Set*_*man 3 .net debugging remote-debugging winforms

我支持相当广泛部署的.NET 2.0 Winforms应用程序.在极少数情况下,我们会收到客户的支持电话,当您尝试启动应用程序时,应用程序会返回.NET运行时异常.

在过去,我们帮助客户重新安装.net框架,并且经常有效......但有时候不行.

在这种情况下,可以使用Windows调试工具来确定问题的原因.如果是这样,你必须下载调试符号到目标计算机(想避免,因为这可能是几百MB的东西下载到目标.)

对于.net应用程序来说这有点过分吗?任何替代品.你会如何调试这个.非特定的逐步将是值得赞赏的.当然,这个应用程序在目标机器上编译为RELEASE配置.客户很可能没有安装开发工具或调试工具.我们通常可以远程控制对计算机的访问.重新迭代.这种情况很快发生,因为客户试图运行应用程序并立即失败.

为客户解决这个问题的最快途径是什么?

以下是事件日志中最近出现的错误示例.
EventType clr20r3..exe P2 2010.1.0.0,p3 4B857AFD P4 BLAH BLAH system.invalidoperation,P10 NIL.

来源:.NET Runtime 2.0错误.EventID:5000

提前致谢.

赛斯

Lex*_* Li 6

为什么不使用它?

对于客户的机器,您将无法进行远程调试.因此,建议捕获崩溃转储以防止挂起问题崩溃和挂起转储,WinDbg或ADPlus.exe在这里非常有用.

请您的最终用户在WinDbg中启动您的应用程序,然后执行

.dump /f path
Run Code Online (Sandbox Code Playgroud)

要保存故障转储,您可以请求转储文件并分析崩溃.

在目标计算机上,不需要符号.当您在自己的计算机上分析崩溃转储时,符号很有用,而SOS之类的东西也很有用.

当然还有其他方法可以获得崩溃转储,

http://blogs.msdn.com/lexli/archive/2009/08/23/when-the-application-program-crashes-on-windows.aspx