美文网首页Android技术知识安卓开发Android知识
Android环境中借助GDB和coredump定位Native

Android环境中借助GDB和coredump定位Native

作者: EddyLiu2017 | 来源:发表于2017-04-28 11:37 被阅读774次

    coredump是linux中定位程序异常退出的机制(Android基于Linux内核,所以coredump机制在Android环境中同样适用,使用方法稍有不同)。在CarLife项目中可以使用coredump机制,并借助GDB工具来定位Native层的异常退出,比如bdsc和bdcl的异常退出问题定位。

    Android coredump生成步骤如下:

    • 增大ulimit空间限制
      默认情况下coredump空间为0


      默认coredump空间

      增大coredump的方法有两种:
      1 通过ulimit –c unlimited


      ulimit –c unlimited命令
      2 在程序中修改
      代码设置
    • 在Android.mk中添加调试选项(有利于查看调用堆栈信息)


      Android.mk
    • 准备好Android.mk和测试原文件(本测试中使用的Makefile和源文件内容如下)


      hello.cpp ![Android.m](https://img.haomeiwen.com/i4905018/428c85a64d2121a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • 将准备好的Makefile和源文件,进行交叉编译(下面的两种交叉编译方式可根据实际情况任意选择一种)
      1 在Android源码环境中进行编译;
      2 在NDK环境中进行编译;
    • 获取生成的测试可执行文件
      如果在Android源码环境下进行编译,需要选择out/target/product/generic/symbols/system/bin/目录下的生成可执行文件(该目录下的文件包含用于调试的符号信息)


      Android源码环境下编译

      如果在NDK环境下编译,可以选择armeabi或armeabi-v7a中的生成文件(armeabi是指的该可执行文件用于Arm的通用CPU;armeabi-v7a是指CPU支持硬件浮点运算;因此armeabi通用性强,但速度慢,而v7a能充分发挥v7a CPU的能力。armeabi就是针对普通的或旧的armcpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu)


      NDK环境下编译
    • 在Android环境中运行可执行文件,程序异常退出后,会在当前目录下产生coredump文件


      coredump文件产生

    GDB的异常退出定位过程如下

    • Windows环境下Android GDB工具位于NDK安装目录下android-ndk-r10c\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin(Android需要使用专门的GDB工具, 用于调试Linux的GDB不能用于Android环境调试)


      GDB工具位置
    • 按照可执行程序的生成目录路径创建对应目录,并将可以行文件拷贝到该目录下(也可直接复制生成文件和对应目录),本测试中测试的根目录为dd,则该过程为:


      测试目录
    • 将coredump文件拷贝到测试根目录下


      拷贝coredump文件
    • 在GDB目录下运行GDB


      运行GDB
    • 针对测试可执行文件,执行file命令


      执行file命令
    • 使用core命令和bt命令定位异常退出位置


      定位异常

    参考链接:

    http://www.csdn123.com/html/exception/597/597343_597351_597349.htm
    http://blog.csdn.net/liminled/article/details/17030747

    博客地址

    caiquanliu.github.io

    相关文章

      网友评论

        本文标题:Android环境中借助GDB和coredump定位Native

        本文链接:https://www.haomeiwen.com/subject/rjvozttx.html