该怎么做:软件崩溃时收集信息

时间:2009-08-04 10:07:51

标签: .net crash

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

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

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

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

您应该努力使记录过程尽可能不具有侵入性,并且足够详细,以至于您至少可以确定从哪里开始查找。

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

答案 2 :(得分:2)

为什么不使用Microsoft已经提供的Mini转储框架。我建议看看MiniDumpCallback和MiniDumpWriteDump函数,它们允许应用程序使用其他特定于应用程序的数据来扩充小型转储。