一、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分析七式

  1. 根据“fatal”关键字附近的异常堆栈来分析,找不到转下一步
  2. 根据“uncaught”关键字附近的异常堆栈来分析,找不到转下一步
  3. 根据 “#00 pc” 关键字附近的异常堆栈来分析,找不到转下一步
  4. 根据”.so”关键字附近的异常堆栈来分析,找不到转下一步
  5. 根据”crash”关键字附近的异常堆栈来分析,找不到转下一步
  6. 根据”die”关键字附近的异常堆栈来分析,找不到转下一步(这一步里,有时候可能是进程被kill或者自己调用killProcess()自杀,这种情况是没有堆栈的)
  7. 根据”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该怎么分析?相关推荐

  1. 关于Windows程序崩溃(Crash)以及生成dump文件的探究

    文章目录 关于Windows程序崩溃(Crash)以及生成dump文件的探究 什么是崩溃(Crash),崩溃(Crash)的现象 崩溃(Crash)的原因是什么 如何消除崩溃时出现的异常信息对话框 如 ...

  2. 编写的windows程序,崩溃时产生crash dump文件的办法

    一.引言 dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草.windows程序 ...

  3. 第7章 分析恶意的windows程序

    1. windows API 1.1类型和匈牙利表示法 windows API使用的变量名会使用前缀来说明它的类型,是一种命名规范 windows API的常见类型 1.2 句柄 在windows中表 ...

  4. 程序Crash后的调试技巧

    当我们的程序突然死掉了,Xcode突然送出一段 "message sent to deallocated instance" 的错误,我们该怎样定位我们的程序bug呢? 又或者我们 ...

  5. 定位程序Crash常用工具和方法

    一.引言 任何程序正确则只有一种结果,但是错误却有千万种,而众多的错误有些是可容忍,有些则是致命的,如除零错误.堆栈溢出.内存越界等导致程序Crash.由于很多错误并不是发生在开发工作者调试阶段,而是 ...

  6. windows程序消息机制(Winform界面更新有关)--转

    1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队 ...

  7. Windows程序员如何转向Linux开发应用?

    这是一封发到邮箱里面的邮件,感觉有点代表性,这里做个统一回答,一家之言哈,欢迎拍砖. 原文如下: 我从csdn学习大本营得到您的信息.不好意思打搅您. 我现在用c++在linux下开发大型应用程序.我 ...

  8. 2008年上半年程序员考试试题分析

    文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功   让系分来得更猛烈 ...

  9. windows程序崩溃生成dump文件

    第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错: 此时打开任务管理器,右击相应进程,点击"Create Dump File&qu ...

最新文章

  1. c语言统计单词字母个数,C语言统计单词个数
  2. delegate,event, lambda,Func,Action以及Predicate
  3. 排序 (5)计数排序“概念”
  4. leetcode150. 逆波兰表达式求值
  5. java世博会,反应原生失去的世博会
  6. 小程序 graphql_GraphQL应用程序中的五个常见问题(以及如何解决)
  7. 使用outputstream写到指定位置_MaxCompute Spark与Spark SQL对比分析及使用注意事项
  8. python 38day--CSS简介
  9. 华为正式宣布全场景AI计算框架MindSpore开源 降低AI开发门槛
  10. nvidia refelx_AMD这么猛?!NVIDIA三款新卡胎死腹中
  11. 探索解析微服务下的RabbitMQ
  12. React Native填坑之旅--class(番外篇)
  13. linux的forx函数-进程控制
  14. Cuda11.6 下载与安装[排坑版]
  15. 谷歌逐梦穿戴圈:Wear OS的失败能够靠Pixel Watch挽回吗?
  16. wix log_如何正确地从Wix切换到WordPress(逐步操作)
  17. 如何获取当前配置的IPV6地址的前缀长度(掩码)
  18. C++ std:string 转 LPWSTR
  19. 电子科技大学《图论及其应用》复习总结---第二章 树
  20. 东南大学21年计算机考研情况

热门文章

  1. 1421. 净现值查询
  2. 笔记:尺取法(最短子区间问题)
  3. AIX smit设置设置能够输入中文
  4. 【渝粤题库】国家开放大学2021春2099民事诉讼法学题目
  5. 安全设备默认地址账密总结
  6. 一年级计算机课画画用什么,一年级学画画入门教程
  7. React官网Hook API 索引模块知识点整理(五)
  8. 北工商计算机学校,北京工商大学计算机学院
  9. 厚基础Linux——学习笔记(一)
  10. #千锋逆战班,拼搏永向前#