GDB 调试Native Crash 总结

本文总结了Android Native Crash的定义,分析方法以及如何使用GDB进行离线和在线调试。通过GDB命令,如bt、p、disass等,可以定位并解决问题。对于可复现的问题,可以通过gdbserver进行在线调试。
摘要由CSDN通过智能技术生成

一 、 什么是Native Crash :

    最简单的理解就是发生在Native世界里的异常,当然你也可以更直接一些,发生在lib库里异常。

    常见的native crash有 SIG 7/11 等,尤其是这两个哥们,在新项目阶段的出场率还是非常高的,访问非法内存/内存对齐诸如此类。

二、如何分析Native Crash:

     发生nativeCrash的时候,通常可以从mainlog中看到如下打印:    

     01-01 08:44:29.559   133   133 I DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
     01-01 08:44:29.559   133   133 I DEBUG   : Build fingerprint: 'XXXXXXXXXXX:user/release-keys'
    01-01 08:44:29.569   133   133 I DEBUG   : pid: 261, tid: 326, name: AudioService  >>> system_server <<<
    01-01 08:44:29.569   133   133 I DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000d

    从这里我们可以看到出现问题的进程和线程分别是261 /326  对应就是system_server  / AudioService ,而发生异常的原因就是SIG11 ,访问了一个非法地址0xd。

    那么如何分析呢?我们需要知道出现问题的上下文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值