2008-09-09 83 views
6

我已经有一段时间在生产Windows应用程序了,并且它已设置为在发出异常时向我们发送错误报告。其中大部分都是相当具有描述性的,并且帮助我很快找到问题(我使用MS应用程序异常块)。.NET生产调试

有几次,我有报告指出我无法复制的问题,而且似乎只发生在少数客户端计算机上。

我没有物理访问这些客户机,有什么策略可以用于调试?在代码中构建一些跟踪代码会更好吗,还是有其他一些替代方法?

谢谢。

编辑:我应该已经更清楚了:我得到的错误报告确实有堆栈跟踪,但由于它是生产代码,它并不表示导致异常的确切线,只是它的方法被抛出。

回答

2

一种方法是生成一个尽可能靠近抛出异常点的(小型)转储文件。这article谈论如何从托管代码做到这一点。

然后你可以转储文件加载到Visual Studio或WinDbg中并与SOS

1

我一直用这个module从杰夫未处理的异常,向我发送一封电子邮件,堆栈跟踪等

2

你是在正确的轨道上。您需要创建一个在本地记录动作/异常的跟踪模块。

然后,您可以拥有一个按钮或一个菜单选项,用户可以单击该按钮或菜单选项,在问题发生时自动将此信息发送给您,或者他们可以选择获取该文件以便它们可以将其传输以任何其他方式给你。

您甚至可以内置诊断代码来对系统运行完整性检查并向您发送报告(可能会运行所有单元测试以查看它们是否在该系统上运行)。

1

援助智能从Gurock Software检查检查它派上用场,很多次我。在分析日志文件时,放入.NET应用程序非常简单,并且可以为您提供强大的控制功能。它具有日志级别,允许您关闭某些功能,除非在某些情况下,所以您不会失去性能。

他们甚至有服务器软件,您的软件可以连接到保存日志,当你没有完全访问机器。例如,您可以在www.yourdomain.com上运行服务器。你的软件将有一个配置选项来打开调试。 Smart Inspect将被配置为将日志数据发送到您的服务器(也可以选择本地文件),以便无论软件运行在何处都可以实时记录日志。

Smart Inspect的配置非常简单,并且有很多功能可以帮助您。我已经使用它来即时调试高影响力的多线程服务器应用程序,而无需关闭机器。它具有跟踪不同进程,线程和机器的所有工具。