zoukankan      html  css  js  c++  java
  • ndk工具使用之armeabiaddr2line 【转http://www.2cto.com/kf/201207/140136.html】

    ndk工具使用之arm-eabi-addr2line
     

     
    $ arm-eabi-addr2line.exe --help
    Usage: arm-eabi-addr2line [option(s)] [addr(s)]
     Convert addresses into line number/file name pairs.
     If no addresses are specified on the command line, they will be read from stdin
     The options are:
      @<file>                Read options from <file>
      -b --target=<bfdname>  Set the binary file format
      -e --exe=<executable>  Set the input file name (default is a.out)
      -i --inlines           Unwind inlined functions
      -j --section=<name>    Read section-relative offsets instead of addresses
      -s --basenames         Strip directory names
      -f --functions         Show function names
      -C --demangle[=style]  Demangle function names
      -h --help              Display this information
      -v --version           Display the program's version


    arm-eabi-addr2line: supported targets: elf32-littlearm elf32-bigarm elf32-little elf32-big srec symbolsrec tekhex binary ihex
    Report bugs to <http://www.sourceware.org/bugzilla/>

    作用:
    so绝对地址到代码行数的计算,以及相关代码行数信息的获取
    注意点:
    1.绝对地址=so加载的起始地址 - 当前出错代码地址(如pc,或lr等)
    2.so必须是要附号信息的
    常用实例:
    [java] 
    arm-eabi-addr2line.exe -C -f -e ./xxx.so 0x186759 

    另外附一个例子 

    使用addr2line实现查看C代码栈中的信息定位到程序的代码。(个人理解,直白点就是当我的程序出现bug后,会在eclipse的logcat一些错误信息,但是C代码只会打印出栈中的信息)

    1。 addr2line工具所在目录:D:\android-ndk-r8\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin

    2。 android工程所在目录:  定位到你工程的要目录即可. (PROJECT_HOME)

    3。执行:D:\android-ndk-r8\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-addr2line.exe -e PROJECT_HOME\obj\local\armeabi\出错的.so

    4。输入要查看的地址信息。

    addr2line工具的使用

    上图可做为参考!

    首先进入android工程所在目录,执行addr2line -e *.so文件,后面根据logcat打出来信息查找错误。

    附代码定位参考图:

    addr2line工具的使用

  • 相关阅读:
    ARP:地址解析协议,RARP
    pip 安装psutil 报错 error: command 'gcc' failed with exit status 1
    linux shell 控制脚本
    linux shell 呈现数据
    linux shell 处理用户输入
    shell结构化命令
    centos7 安装配置 squid作为正向代理
    linux基本脚本
    linux文件权限
    模拟垃圾分布
  • 原文地址:https://www.cnblogs.com/songtzu/p/2989307.html
Copyright © 2011-2022 走看看