Windows程序crash该怎么分析?
一、crash率
1、计算公式
- 日crash率 = 每日上报crash设备数 / 每日联网设备数
- crash率 = 统计周期内每日crash率的平均值
- 统计周期:默认BSC统计周期默认是按月统计
2、过滤规则
有效上报crash设备 = 上报crash设备 - 日活低于1%非测试版本上报设备数
有效联网设备 = 联网设备总数 - 日活低于1%的非测试版本联网上报设备数
当天crash率 = 有效上报crash设备数/有效联网设备数
月度crash率 = 当月每天crash率累计/当月天数
3、常见的crash异常
- NullPointerException 空指针
- ClassCastException 类型转换异常
- IndexOutOfBoundsException 下标越界异常
- ActivityNotFoundException Activity未找到异常
- IllegalStateException 非法状态异常
- ArrayIndexOutOfBoundsException 数组越界异常
- SecurityException 安全异常
二、有堆栈的crash分析七式
- 根据“fatal”关键字附近的异常堆栈来分析,找不到转下一步
- 根据“uncaught”关键字附近的异常堆栈来分析,找不到转下一步
- 根据 “#00 pc” 关键字附近的异常堆栈来分析,找不到转下一步
- 根据”.so”关键字附近的异常堆栈来分析,找不到转下一步
- 根据”crash”关键字附近的异常堆栈来分析,找不到转下一步
- 根据”die”关键字附近的异常堆栈来分析,找不到转下一步(这一步里,有时候可能是进程被kill或者自己调用killProcess()自杀,这种情况是没有堆栈的)
- 根据”anr”关键字附近的异常堆栈来分析
三、crash一般需要打印的东西
- 堆栈信息
- 运行日志
- 设备信息
四、Win程序崩溃时如何产生crash dump 文件
1、引言
dump文件是C++程序发生异常时,保存当时的程序的运行状态的文件,是调试异常程序的重要方法。所以,除了日志文件,dump文件便成了我们查找错误的最后一根救命稻草。
不同于Linux环境,Windows环境下,需编写代码产生dump文件
2、原理
Windows程序遇到异常,没有try-catch或者try-catch也无法捕获到的异常时,程序就会自动退出。如果这个时候,没有dump文件的话,我们没有得到任何程序退出的信息。
在Windows程序异常退出之前,会预先调用一个在程序中注册的异常处理回调函数。只要我们在这个回调函数中调用MiniDumpWriteDump函数就可以产生我们想要的dump文件。
3、实现
- 调用SetUnhandledExceptionFilter注册一个自定义的异常处理回调函数
- 通过CreateFile创建dump文件,调用MiniDumpWriteDump函数往dump文件写异常信息
- 得到dump文件后,将SetUnhandledExceptionFilter设置为失效状态
Windows程序crash该怎么分析?相关推荐
- 关于Windows程序崩溃(Crash)以及生成dump文件的探究
文章目录 关于Windows程序崩溃(Crash)以及生成dump文件的探究 什么是崩溃(Crash),崩溃(Crash)的现象 崩溃(Crash)的原因是什么 如何消除崩溃时出现的异常信息对话框 如 ...
- 编写的windows程序,崩溃时产生crash dump文件的办法
一.引言 dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草.windows程序 ...
- 第7章 分析恶意的windows程序
1. windows API 1.1类型和匈牙利表示法 windows API使用的变量名会使用前缀来说明它的类型,是一种命名规范 windows API的常见类型 1.2 句柄 在windows中表 ...
- 程序Crash后的调试技巧
当我们的程序突然死掉了,Xcode突然送出一段 "message sent to deallocated instance" 的错误,我们该怎样定位我们的程序bug呢? 又或者我们 ...
- 定位程序Crash常用工具和方法
一.引言 任何程序正确则只有一种结果,但是错误却有千万种,而众多的错误有些是可容忍,有些则是致命的,如除零错误.堆栈溢出.内存越界等导致程序Crash.由于很多错误并不是发生在开发工作者调试阶段,而是 ...
- windows程序消息机制(Winform界面更新有关)--转
1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队 ...
- Windows程序员如何转向Linux开发应用?
这是一封发到邮箱里面的邮件,感觉有点代表性,这里做个统一回答,一家之言哈,欢迎拍砖. 原文如下: 我从csdn学习大本营得到您的信息.不好意思打搅您. 我现在用c++在linux下开发大型应用程序.我 ...
- 2008年上半年程序员考试试题分析
文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功 让系分来得更猛烈 ...
- windows程序崩溃生成dump文件
第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错: 此时打开任务管理器,右击相应进程,点击"Create Dump File&qu ...
最新文章
- c语言统计单词字母个数,C语言统计单词个数
- delegate,event, lambda,Func,Action以及Predicate
- 排序 (5)计数排序“概念”
- leetcode150. 逆波兰表达式求值
- java世博会,反应原生失去的世博会
- 小程序 graphql_GraphQL应用程序中的五个常见问题(以及如何解决)
- 使用outputstream写到指定位置_MaxCompute Spark与Spark SQL对比分析及使用注意事项
- python 38day--CSS简介
- 华为正式宣布全场景AI计算框架MindSpore开源 降低AI开发门槛
- nvidia refelx_AMD这么猛?!NVIDIA三款新卡胎死腹中
- 探索解析微服务下的RabbitMQ
- React Native填坑之旅--class(番外篇)
- linux的forx函数-进程控制
- Cuda11.6 下载与安装[排坑版]
- 谷歌逐梦穿戴圈:Wear OS的失败能够靠Pixel Watch挽回吗?
- wix log_如何正确地从Wix切换到WordPress(逐步操作)
- 如何获取当前配置的IPV6地址的前缀长度(掩码)
- C++ std:string 转 LPWSTR
- 电子科技大学《图论及其应用》复习总结---第二章 树
- 东南大学21年计算机考研情况