时根据backtrace定位问题的方法

时根据backtrace定位问题的方法

ID:8959392

大小:111.80 KB

页数:5页

时间:2018-04-13

时根据backtrace定位问题的方法_第1页
时根据backtrace定位问题的方法_第2页
时根据backtrace定位问题的方法_第3页
时根据backtrace定位问题的方法_第4页
时根据backtrace定位问题的方法_第5页
资源描述:

《时根据backtrace定位问题的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、进程异常终止时根据backtrace定位问题的方法项目中经常会遇到进程异常终止的问题,本文介绍的是根据log中打印出来的backtrace定位问题点的方法。1.如何获取debug信息当异常发生时,一般会有两个地方保存backtrace和stack;(1)Logcat一般在mainlog里面,关键字是“DEBUG”;(2)文件中一般在/data/tombstones,以tombstone_XX命名的文件;一般是有如下的格式:2.工具及使用举例主要用于定位的工具有:addr2line和objdump;使用中有两个注意点:(1)

2、必须使用带symbol的目标文件这两个工具要结合带symbol的目标文件才能达到定位的目的;symbol文件在编译过程中有,一般在最终版本中的目标文件是不带symbol的。以联芯的ril为例,其最终生成的目标文件是out/target/product/U930HD/system/lib/libreference-ril.so中,而其symbol文件在out/target/product/U930HD/symbols/system/lib/libreference-ril.so,我们最终使用的目标文件是后者。(1)必须使用正

3、确的工具版本Android在编译的时候,会指定arm的交叉编译器,我们分析问题模块时,需要使用的工具版本必须和编译过程中指定的arm编译器一致;以联芯为例,编译时使用的gcc版本是prebuildt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin中指定的以arm-linux-androideabi-xxx命名的工具,因此我们使用的分析工具也必须是这个路径下的工具。2.1addr2line该工具可以根据debug信息中提供的address(如#00PCxxxxxxxx)

4、,直接定位到代码行。使用及分析过程如下:在debug信息中看到,#00pc0000bb96/system/lib/libreference-ril.so#01pc000049e6/system/lib/libreference-ril.so#02pc000070d0/system/lib/libreference-ril.so#03pc000052a6/system/lib/libril.so1.查看第一条出错信息:>arm-linux-androideabi-addr2line–f–elibreference-ril.s

5、o0000bb96>at_response_free>atchannel_mch.c:1071这告诉我们出错的代码在文件atchannel_mch.c的at_response_free中,在1071行;但是at_response_free是ril的公共调用,其本身应该没有问题,问题应该在其入参,这必须知道其调用者;2.查看第二条出错信息:>arm-linux-androideabi-addr2line–f–elibreference-ril.so000049e6>requestRadioPower>reference-ri

6、l.c:3808这告诉我们之前的at_response_free的调用者在文件reference-ril.c的requestRadioPower中,在3808行;这里调用的入参p_response不是NULL,但是其内部成员line为NULL,引起了SIGSEGV段错误。通过代码流程的排查,发现在3670行有了一次free的操作,但是没有将p_response置成NULL,形成了野指针,在3808行的时候,野指针不为NULL,作为有效入参输入,导致了上述的段错误。我们通过addr2line定位到问题出现的点,缩小代码排查范

7、围,达到了快速定位问题的目的。该工具分析过程中,必须结合源码,才能根据代码行分析问题的原因,如果没有源码,就必须依赖下面的工具来分析了。2.2objdump该工具是用来对目标文件实施反汇编的工具,如果是带symbol的目标文件,反汇编后可以看到部分源码,如果是不带symbol的目标文件,就只能看到汇编码。不带symbol反汇编结果带symbol反汇编结果该工具使用及分析过程如下:在debug信息中看到,#00pc0000bb96/system/lib/libreference-ril.so#01pc000049e6/sys

8、tem/lib/libreference-ril.so#02pc000070d0/system/lib/libreference-ril.so#03pc000052a6/system/lib/libril.so1.反汇编目标文件>arm-linux-androideabi-objdump–d–S–lli

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。