代码之家  ›  专栏  ›  技术社区  ›  Jon Dewees

.NET生产调试

  •  6
  • Jon Dewees  · 技术社区  · 17 年前

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

    在某些情况下,我有一些报告是我无法复制的问题,并且似乎只在少数客户机上发生。

    我没有访问这些客户机的物理权限,可以使用哪些策略进行调试?在代码中构建一些跟踪是更好的,还是有其他的选择?

    谢谢您。

    编辑:我应该更清楚:我得到的错误报告确实有堆栈跟踪,但是由于它是生产代码,它没有指明导致异常的确切行,只是指出了抛出异常的方法。

    5 回复  |  直到 17 年前
        1
  •  2
  •   Rob Walker    17 年前

    一个选项是生成尽可能靠近引发异常点的(迷你)转储文件。这个 article 从托管代码中讨论如何做到这一点。

    然后可以将转储文件加载到Visual Studio或windbg中,并借助 SOS

        2
  •  2
  •   Vaibhav    17 年前

    你走对了。您需要创建一个跟踪模块,在本地记录操作/异常。

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

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

        3
  •  1
  •   Gulzar Nazim    17 年前

    我总是用这个 module 来自Jeff的未处理异常,通过StackTrace等向我发送电子邮件。

        4
  •  1
  •   David Lambert    17 年前

    智能检查来自 Gurock Software 对我来说已经有很多次了。它非常容易放入.NET应用程序中,并在分析日志文件时提供非常强大的控制。它具有日志级别,允许您关闭某些功能(在某些情况下除外),这样您就不会失去性能。

    他们甚至拥有服务器软件,当您无法完全访问机器时,您的软件可以连接到服务器软件来保存日志。例如,您可以在www.yourdomain.com上运行服务器。您的软件将有一个配置选项来打开调试。智能检查将被配置为将日志数据发送到您的服务器(也可以选择发送到本地文件),这样无论软件在哪里运行,您都可以获得实时日志记录。

    SmartInspect非常容易配置,有许多功能可供您使用。我使用它在运行中调试高影响的多线程服务器应用程序,而不需要关闭机器。它有所有的钩子来跟踪不同的进程、线程和机器。

        5
  •  0
  •   Carl    17 年前

    我会利用事件日志。请看这里:

    http://support.microsoft.com/kb/307024