在生产环境中调试应用程序

8
在我们使用C#和3.5框架编写的自制应用程序中,生产环境出现了一些奇怪的错误。该应用程序没有日志记录(我知道...),即使在事件查看器中崩溃时也无法给我们提供有用的信息。此外,即使存在错误处理,其处理方式也很差劲。
检查代码并在开发环境中寻找问题不是解决方案,因为我们不知道问题出在哪里。
我们想在生产环境中“调试”应用程序。我们梦想着使用具有Visual Studio Debugger和ILSpy功能的工具。也就是说,使用反汇编代码进行逐步执行。
那么,在没有日志或错误处理的情况下,我们如何调试生产环境中的应用程序呢?

3
重新部署同一版本并添加日志记录不是一个选项吗? - Marcel N.
2
据我记得,Visual Studio可以在远程机器上进行调试 - 只需在生产服务器上启动调试服务,并部署“DEBUG”编译的代码...虽然不够完美,但总比没有强。 - Tisho
1
@tisho:很棒的功能,但是当调试器附加并且代码在断点处暂停时,应用程序将不再响应。这可能被视为服务中断。 - Steve B
当然,正如我所说,这是一个不好的hack。但你可以启动一个新实例(网站、服务),并单独进行调试。它仍在远程服务器上。问题是如果问题发生在高负载之后 - 你不能轻易地模拟非公共实例上的高负载..只是一些想法... - Tisho
你是否拥有部署到生产环境的代码精确版本的调试符号文件? - Chris Dickson
显示剩余4条评论
1个回答

10

请参阅如何设置远程调试

编辑:看到一些回复后,我的建议继续

  • 在代码中添加更多的Try/Catch块。
  • 对变量和列表进行更多的空值检查
  • 增加更多的错误处理。采用分而治之的策略来解决这种情况。确定错误出现的位置,并开始添加错误处理、日志记录和常规管道以实现更好的代码。

如果您执行这些操作,问题将得到解决;因为您现在拥有了跟踪错误的工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接