热门标签 | 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设置为失效状态

推荐阅读
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • C# .NET 4.1 版本大型信息化系统集成平台中的主从表事务处理标准示例
    在C# .NET 4.1版本的大型信息化系统集成平台中,本文详细介绍了主从表事务处理的标准示例。通过确保所有操作要么全部成功,要么全部失败,实现主表和关联子表的同步插入。主表插入时会返回当前生成的主键,该主键随后用于子表插入时的关联。以下是一个示例代码片段,展示了如何在一个数据库事务中同时添加角色和相关用户。 ... [详细]
  • PHP与MySQL的Web应用开发技术深入解析
    PHP与MySQL的Web应用开发技术深入解析 ... [详细]
  • 在网络故障排查中,tcpdump 是一款强大的工具,尤其在 Linux 环境下。尽管开发环境中问题较少,但在测试或生产环境中,往往会遇到各种难以预料的异常情况。通过在问题发生的环境中启用 tcpdump 进行抓包,并重现问题,可以获取到宝贵的原始数据,为问题的诊断提供关键线索。本文将详细介绍如何使用 tcpdump 进行实战操作,帮助读者掌握这一技能。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • WebStorm 是一款强大的集成开发环境,支持多种现代 Web 开发技术,包括 Node.js、CoffeeScript、TypeScript、Dart、Jade、Sass、LESS 和 Stylus。它为开发者提供了丰富的功能和工具,帮助高效构建和调试复杂的 Node.js 应用程序。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • 在嵌入式Linux系统中,性能低下通常由CPU、内存和I/O三个关键因素引起。为了有效提升系统性能,首先需要识别并定位性能瓶颈。通过综合分析这些瓶颈,可以采取针对性的优化措施,如调整内核参数、优化算法和改进数据结构等,从而显著提高系统的整体性能。 ... [详细]
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社区 版权所有