栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 程序 Crash 的分析

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 程序 Crash 的分析

1) 是否容易重现

如果容易,它的复现步骤是什么
如果不容易,它在什么条件下的出现机率比较大,有没有可能缩小排查的范围

2) 是否最近才引入的,发现的时机和频率如何

找出 crash 出现的时间范围,时机,和频率
根据 backgrace 和 git log, 回顾 crash 相关代码的修改记录

3) 灵活运用演绎法,归纳法和二分法
  • 演绎法: 从一般到特殊,从常见的 crash 问题和解决方案推断
  • 归纳法: 从特殊到一般,从最近频发的 crash 问题找出共性特征
  • 二分法: 用二分法合理划分问题域,不断缩小范围
4) 大胆假设,小心求证

假设条件,测试,排除,不断重复,缩小范围
有必要时画一张思维导图,记下每条排查路径

5) 君子性非异也,善假于物也

查询 google, stackflow, 听取同事的意见

6) 学学侦破和推理

最后一条,看看破案和推理小说及剧情,学学侦破技术

  • 如何找线索,
  • 如何勘查现场,
  • 如何排查嫌疑
  • 如何查询积案,进行并案

有一些惯犯和惯用作案手段值得研究

  1. 多线程处理不当
    多个线程操作一块内存区域,没有安全地加锁和串行化
    合局和单例对象是重点排查对象

  2. 内存处理不当
    内存管理不当,用到的内存却给别人破坏了,例如

    • 试图释放已经释放了的内存
    • 试图释放并未分配的内存
    • 试图读写已经释放了的内存
    • 试图读写并未分配的内存
    • 内存分配错误, 没有正确初始化
    • 读写越界,例如动态分配的数组,列表及类
Reference
  • https://blog.csdn.net/fanyamin/article/details/526958?spm=1001.2014.3001.5502
  • https://blog.csdn.net/fanyamin/article/details/1758981?spm=1001.2014.3001.5502
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号