【问题标题】:What to: Collect Information When Software Crashes做什么:软件崩溃时收集信息
【发布时间】:2009-08-04 10:07:51
【问题描述】:

我注意到很多桌面应用程序(例如 Firefox、Google Chrome、VS 2008 等)都有一个崩溃转储,可以发送给软件供应商进行分析。我打算自己创建这样的故障转储。我在做.Net

在收集哪些数据时,最佳做法是什么,以便收集的数据足以重现和修复错误,仅此而已?

【问题讨论】:

    标签: .net crash


    【解决方案1】:

    我收集异常名称、堆栈跟踪并询问客户在崩溃时他在做什么。通常这就足够了。

    此外,您还可以使用他们的Windows Error Reporting 与 Microsoft 建立帐户以获取应用程序崩溃的调试数据。

    【讨论】:

    • +1 用于 Windows 错误报告。当您的应用真的严重崩溃时,您无法在 .NET 中轻松获取信息 - 让 Windows 将其发送给 Microsoft,然后在那里获取详细信息。
    【解决方案2】:

    我建立了一个直接向我的错误数据库报告的日志系统,它报告了以下信息:

    • 有关计算机和运行时环境的不可识别信息(如 Windows 版本、某些区域设置、内存量、cpu 类型等)
    • 堆栈跟踪和有关异常本身的信息
    • 加载的程序集、版本号
    • 加载的不是程序集的 dll(您新知道 Skype 注入的用于处理热键调用的 dll 可能会弄乱您自己的程序)

    首先会弹出一个表单,用户可以在其中查看要发送的所有内容,并且可以选择识别他/她自己 + 描述问题发生时他/她正在做什么。如果提供了电子邮件,用户将收到一封电子邮件,用于跟踪错误报告。

    您应该努力使日志记录过程尽可能不打扰,并且足够详细,以便您至少可以确定从哪里开始查找。

    我目前正在构建一个日志系统,可以为多次遇到相同问题的用户启用,其中日志的最后 N 项可以附加到错误报告中,其中包含代码流(方法调用、返回、异常等)。

    【讨论】:

      【解决方案3】:

      为什么不使用 Microsoft 已经提供的 Mini dump 框架。我建议查看函数 MiniDumpCallback 和 MiniDumpWriteDump,它们允许应用程序使用额外的应用程序特定数据来扩充迷你转储。

      【讨论】:

        猜你喜欢
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 2020-06-17
        • 2013-07-09
        • 2013-08-02
        • 2016-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多