生产服务器上的.net调试

时间:2011-05-18 16:10:32

标签: .net debugging

我的团队和我第一次在.net网络应用项目上工作。我们想知道在生产服务器上调试问题的最有效方法。目前,我们将ftp上传到客户端的生产服务器。

由于我们的背景是在LAMP中,我们正在使用SSH连接到生产服务器,并使用die(),print_r()和注释掉技术的组合来解决问题。

除非我误解了.net工作方式,否则我认为我不能使用相同的方法,因为对.net代码的更改需要完全重新构建项目(在localhost上),然后上传。这太费时了......

是否有更好的方法来解决生产服务器上的问题?

6 个答案:

答案 0 :(得分:3)

我所知道的最好的故障排除工具是Fiddler,Firebug和Glimpse

Fiddler

FireBug

Glimpse

答案 1 :(得分:3)

在处理生产问题时,最好有一个复制生产的环境。在该环境中,您可以部署相同的应用程序,但启用了调试。这将允许您拥有一整套您不想在生产中使用的工具。

一旦拥有此环境,您只需要找出发生异常的位置(通过记录/跟踪)以及如何重现该问题。

问题是生产环境的设计要快(无调试,最小日志记录)和安全。所以管理员讨厌调试甚至是远程调试的概念。

精心设计的架构/制作软件的目标是收集有关出错的足够信息,以便您可以在其他环境中重现错误/场景。

答案 2 :(得分:1)

有多种不同的日志记录框架供您选择,您可以在不需要重建的情况下更改设置。您可以在配置文件中设置日志记录级别,例如。错误,警告,调试等......

您在应用程序中包含所有日志记录级别的检测代码,并且只有在设置了日志级别时才会执行这些日志语句。

这是一个这样的产品的例子。

http://msdn.microsoft.com/en-us/library/ff647183.aspx

答案 3 :(得分:1)

实际上只有三种方法可以调试服务器端问题。

<强>登录 提前计划并向您的应用程序添加日志记录大多数日志框架(如log4net和Enterprise库)都具有根据配置设置记录更多或更少信息的模式。 IIS也有自己的日志记录,您可以查看。

<强>仪表 您可以向应用程序添加性能计数器,如果遇到性能问题,还可以使用现有的性能计数器。此外,Sysinternals和WireShark提供的工具可以为您的代码之外的问题提供便利。

内存转储 您可以捕获应用程序的内存转储,并使用WinDbg等工具查看系统中正在发生的事件的快照。

答案 4 :(得分:1)

.NET中提供的堆栈跟踪,一旦您学会了解它们,就能提供足够的价值来真正追踪错误。你可以启用远程调试,但因为它是客户端的机器而且它是一个真正的痛苦,我会避免这种情况。

大多数情况下,您确保拥有测试覆盖率,了解如何阅读异常,并花些时间考虑您看到的异常。在10年的.NET工作中,我只想在生产服务器上进行一次调试,最后我发现了没有它的bug。

此外,您可以使用ELMAH捕获未处理的异常,这很有帮助。

答案 5 :(得分:1)

调试应该在启用“debug”选项的开发阶段进行。部署到生产时,请关闭“调试”选项以提高效率。但是在生产中,您可以在日志文件中记录错误/异常/堆栈跟踪等,这将帮助您解决手头的问题。

同样,那些die(),print_r()是perl调试方式,因为perl没有任何内置异常或错误跟踪机制。这样就不适用于.NET。