热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows程序crash该怎么分析?

一、crash率1、计算公式日crash率每日上报crash设备数每日联网设备数crash率统计周期内每日crash率的平均值统计周期:默认BSC统计周期默认是按

一、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设置为失效状态

推荐阅读
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 解决Win10 1709版本文件共享安全警告问题
    每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • Ubuntu系统下的GIF动画录制解决方案
    在撰写文章或教程时,GIF动态图能够有效地传达信息。对于Windows用户而言,ScreenToGif是一款非常实用的工具。而在Ubuntu系统中,用户同样拥有多种选择来创建GIF动画,本文将重点介绍两款录屏工具——Byzanz和Peek。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 解决Win10系统自动删除破解软件的问题
    如何处理Win10系统频繁自动删除安装的破解软件?本文将详细介绍可能的原因及解决方案,帮助用户顺利安装所需软件。 ... [详细]
  • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
author-avatar
手机用户2502940341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有