程序卡死崩溃分析总结

对于dump文件定位不到代码行的问题

  1. 检查选择的调试器类型是否正确。例如:对于C++和C#的混合代码,需要使用混合调试器,这样包含了C++非托管文件和C#的托管文件。
  2. 检查dump文件与日志文件时间是否匹配。当定位不到代码行时,可结合最后打印日志的时间定位哪行代码之后引起的crash问题。

崩溃问题常见处理方法

  1. 现象:程序直接闪退的crash问题
    分析 :无效指针内存越界引起的
    解决方法
  • 有相关dump文件:定位dump文件;
  • 查看crash前最后一条日志,排查在该条日志之后可能的引起crash的操作;

需要注意的是, 对于可能引起程序异常的地方,需要try…catch处理。

  1. 现象:程序某个功能卡住,一段时间操作后整个程序卡住,然后crash退出;
    分析:变慢卡住后卡死崩溃的问题,可能是某个线程死锁后,不断操作引起更多的线程死锁,最终导致卡死;
    解决方法
  • 卡死后奔溃捕获的dump文件:该文件只能定位到最后奔溃的地方,可能是操作锁的地方,这时需要分析源文件其他操作该锁的地方,一般较难分析;
  • 结合日志查看:根据开始卡顿的现象分析操作在源代码中位置,结合日志找到该操作的线程是什么;如果有卡死crash的dump文件,就结合当时堆栈信息查看该线程卡在了什么地方;这样就找到最初线程卡住的位置。但如果要明白最终卡死的原因,就需要分析该线程卡住之后对后续的操作的影响,比如会造成后面线程的死锁等。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值