程序崩溃后如何更好的反馈信息

简介: 我们使用Windows都知道,整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的。在大牛的作品《软件调试》 中有描述。在Windows下,软件出错,常见的报告手段:1、事件日志:这里记录了很多关键的错误信息2、崩溃报告:可以自动提交错误的信息,或者手动提交,以不断的改进软件和方便排错3、专用的日志工具:如Netmon,sysinternal等 那我们的软件在崩溃后如何处理呢?主要目的:1、方便我们的排错2、提供更好的使用体验最近在设计一个应用系统时对这个问题进行处理。

我们使用Windows都知道,整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的。在大牛的作品《软件调试》 中有描述。

在Windows下,软件出错,常见的报告手段:

1、事件日志:这里记录了很多关键的错误信息

2、崩溃报告:可以自动提交错误的信息,或者手动提交,以不断的改进软件和方便排错

3、专用的日志工具:如Netmon,sysinternal等

 

那我们的软件在崩溃后如何处理呢?主要目的:

1、方便我们的排错

2、提供更好的使用体验

最近在设计一个应用系统时对这个问题进行处理。

这方面有比较多的参考:

首先在stackoverflow上可以看到,c++ release  program crashes report 

http://stackoverflow.com/questions/112831/how-to-get-a-stack-trace-when-c-program-crashes-using-msvc8-2005

以上有比较多的框架和工具

Windows应用程序处理的一个框架和详细参考资料 

Integrating Crash Reporting into Your Application - A Beginners Tutorial

http://www.codeproject.com/Articles/308634/Integrating-Crash-Reporting-into-Your-Application

http://code.google.com/p/crashrpt/  

http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu 

Google breakPad

Google breakpad 是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Linux和Mac和Solaris。由于他本身跨平台,所以很大的减少我们在平台移植时的工作,毕竟崩溃转储,每个平台下都不同,使用起来很难统一,而Google breakpad就帮我们做到了这一点,不管是哪个平台下的崩溃,都能够进行统一的分析。现在很多工程都在使用他:最著名的几个如Chrome,Firefox,Picasa和Google Earth。另外他的License是BSD的,也就是说,我们即便是在商业软件中使用,也是合法的 

 http://code.google.com/p/google-breakpad/ 

http://bigasp.com/archives/450 

 

 调试Release发布版程序的Crash错误

 http://www.cppblog.com/Walker/articles/146153.html

http://blog.sina.com.cn/s/blog_48f93b530100fsln.html 

 

对于托管程序也有 Good crash reporting library in c#

http://stackoverflow.com/questions/49224/good-crash-reporting-library-in-c-sharp 

  

顺便看到了这个比较有意思的内容,35个你也许不知道的Google开源项目 http://www.enet.com.cn/article/2009/1228/A20091228592251.shtml 

 

由于我的应用 需要处理跨平台问题,因此使用了Google breakPad

顺便把整理的资料放在了skydriver上,   

https://skydrive.live.com/#cid=56B433AD3D1871E3&id=56B433AD3D1871E3%21427

https://skydrive.live.com/view.aspx?cid=56B433AD3D1871E3&resid=56B433AD3D1871E3%21433 

 

 

相关文章
|
3月前
|
测试技术
测试遗漏是能力问题?
测试遗漏是能力问题?
14 1
|
15天前
|
监控 安全
线程死循环是多线程应用程序开发过程中一个难以忽视的问题,它源于线程在执行过程中因逻辑错误或不可预见的竞争状态而陷入永久运行的状态,严重影响系统的稳定性和资源利用率。那么,如何精准定位并妥善处理线程死循环现象,并在编码阶段就规避潜在风险呢?谈谈你的看法~
避免线程死循环的关键策略包括使用同步机制(如锁和信号量)、减少共享可变状态、设置超时、利用监控工具、定期代码审查和测试、异常处理及设计简洁线程逻辑。通过这些方法,可降低竞态条件、死锁风险,提升程序稳定性和可靠性。
16 0
|
3月前
|
测试技术
有了测试标准流程后缺陷就不会遗漏到线上吗?
有了测试标准流程后缺陷就不会遗漏到线上吗?
|
9月前
|
存储 监控 数据可视化
01.崩溃捕获设计实践方案
01.崩溃捕获设计实践方案
133 3
|
运维 Cloud Native 架构师
好的反馈机制 | 学习笔记
快速学习好的反馈机制
104 0
好的反馈机制 | 学习笔记
|
SQL BI 数据库
记一次bug分析定位过程
其实很多时候,我们在测试过程中发现的很多bug,并不是由于开发人员编码能力不好,或者粗心大意造成,而是在项目开发实施过程中,没有遵循一些必要的项目流程,没有充分认识到质量的重要性;如果能做好这方面的工作,关注流程,而不是喊口号,人人重视质量,人人为结果负责,那么,会有很多问题、不只是bug,都将“被扼杀在摇篮里”......
记一次bug分析定位过程
|
缓存 测试技术 数据库
【测试基础理论】卡死我了!这算bug么?(非功能-效率性)
【测试基础理论】卡死我了!这算bug么?(非功能-效率性)
|
测试技术
如何做到测试场景不遗漏?
每一次提测就像一次质量问题的万箭齐发,稍不留意,中个一两箭算是小事,乱箭穿胸那也是经常的。如何做到无懈可击,仅仅靠闪是不够的。这个时候,测试分析,可以帮助你。通过对业务、经验、质量的深度理解和分析,结合测试工具,可以让你在这漫天箭雨中,有条有理,从容不迫,闲庭信步。
3016 1
|
开发者 前端开发
[译] 如何避免我作为初级开发者时所犯下的 7 个错误
我们应该从中吸取教训。在成为高级开发者的过程中,我犯过许多错误。本文讲述了当我还是初级开发者时犯过的 7 个严重错误,以及如何避免这些错误。
852 0