`
cnetwei
  • 浏览: 177203 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

查看栈信息中 .so文件里地址对应的方法名称

阅读更多

在Android开发中,涉及到JNI时,有时会报告非常底层栈信息,在栈信息中 仅仅给出了.so文件出错位置的地址,根本看不成问题所在,但是如果使用arm-eabi-addr2line 命令,就可以把地址信息转换成方法名称:

arm-eabi-addr2line 命令 在%ANDROID_SOURCE%\prebuilt\linux-x86\toolchain\arm-eabi-4.4.0\bin;


例如有如下的栈信息:

 

02-21 13:34:39.621 I/DEBUG   (   79): pid: 394, tid: 560  >>> android.process.media <<<
02-21 13:34:39.621 I/DEBUG   (   79): signal 11 (SIGSEGV), fault addr 4b98b000
02-21 13:34:39.621 I/DEBUG   (   79):  r0 4b98a054  r1 00000000  r2 00000e94  r3 4b98b000
02-21 13:34:39.621 I/DEBUG   (   79):  r4 00000000  r5 4b989f14  r6 9ea08104  r7 0029b0e5
02-21 13:34:39.621 I/DEBUG   (   79):  r8 4b98a564  r9 43ddfc68  10 43ddfc50  fp 00290840
02-21 13:34:39.621 I/DEBUG   (   79):  ip 9ea0816c  sp 4b9898c8  lr 9ea05393  pc afd1cde6  cpsr 20000030
02-21 13:34:39.621 I/DEBUG   (   79):  d0  0000004442880000  d1  3ff0000042880000
02-21 13:34:39.621 I/DEBUG   (   79):  d2  bfd3441350baf6de  d3  c1493000c1323800
02-21 13:34:39.621 I/DEBUG   (   79):  d4  4900000040dcb000  d5  000000000006e580
02-21 13:34:39.621 I/DEBUG   (   79):  d6  4515a00000000800  d7  40800000c48ee000
02-21 13:34:39.621 I/DEBUG   (   79):  d8  0000000000000000  d9  0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  d10 0000000000000000  d11 0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  d12 0000000000000000  d13 0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  d14 0000000000000000  d15 0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  scr 80000012
02-21 13:34:39.621 I/DEBUG   (   79):
02-21 13:34:39.661 I/DEBUG   (   79):          #00  pc 0001cde6  /system/lib/libc.so
02-21 13:34:39.661 I/DEBUG   (   79):          #01  pc 00005390  /system/lib/libdrm1.so
02-21 13:34:39.661 I/DEBUG   (   79):          #02  pc 0000321c  /system/lib/libdrm1.so

02-21 13:34:39.661 I/DEBUG   (   79):
02-21 13:34:39.661 I/DEBUG   (   79): code around pc:
02-21 13:34:39.661 I/DEBUG   (   79): afd1cdc4 429a3301 2000d1f4 46c0bd30 2a00b510

 

则执行以下命令:

arm-eabi-addr2line -f -e %ANDROID_SOURCE%/out/target/product/xxxxx/system/lib/libdrm1.so 00005390


返回结果就是该地址对应的方法名称。

分享到:
评论

相关推荐

    Han So Tranh Hung_Hung_book_源码.zip

    这些源码文件可能按照章节或者功能分类,每个文件或目录都对应书中的一个编程实例或问题解决方法。 综合以上信息,我们可以期待在这个源码包中学习到: 1. 编程基础:如何定义变量、控制流程(条件语句、循环)、...

    JNI简单实例

    需要在Android.mk或CMakeLists.txt文件中配置编译选项,将本地库编译为适用于不同架构的.so文件,并将其添加到APK的`lib`目录下。然后在Android Studio的`build.gradle`文件中配置NDK支持。 9. **调试JNI** 调试...

    Neoway Android RIL

    这些动态链接库(.so文件)在Android系统启动时被加载,使得RIL能正确地与硬件接口交互,处理来自操作系统的通信请求。 具体来说,"lib64"目录下的库文件可能包含: 1. `libril.so`:这是Android RIL的核心库,实现...

    超级有影响力霸气的Java面试题大全文档

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...

    DLL动态链接库调用C#源代码

    在开发过程中,如果遇到调用DLL的问题,可以使用调试器(如Visual Studio)设置断点,查看调用栈和变量状态,或者使用`kernel32.dll`的`GetLastError`函数获取错误信息。 通过以上步骤和注意事项,你将能够有效地...

    WINSOCK-UDP.rar_VC UDP_WINSOCK_udp 接收 广播_vc winsock

    根据压缩包子文件的文件名称列表,我们可以推测项目结构: - "BroadcastClient.aps"和"BroadcastClient.clw"是Visual Studio的工程文件,用于保存项目设置和工作空间信息。 - "BroadcastClientDlg.cpp"和...

    第6章GNU开发工具链的使用

    - `-l LIBNAME`: 设定编译所需的库名称,例如库文件名为`libxxx.so`,则库名称为`xxx`。 - `-static`: 使用静态链接,编译后的可执行程序不依赖于外部库文件。 - `-O[N]`: 优化编译,提高可执行程序的运行速度,N的...

    Linux下core文件的使用方法详解

    如果需要在本地调试远程设备产生的core文件,需使用对应平台的GDB版本,并设置正确的共享库搜索路径,例如`solib-search-path /path/to/library`。 总的来说,理解和利用core文件是Linux系统中诊断和修复程序异常的...

    TurboLte_code_210224.rar

    TurboLte_code_210224.rar 这个压缩包文件的名称暗示着它可能包含与Turbo LTE相关的代码或程序,日期210224可能指的是2021年2月24日,这可能是代码的更新或发布日期。标签“数字通信”表明内容与使用数字技术进行...

    uboott移植实验手册及技术文档

    了解 U-Boot-1.3.1 的代码结构,掌握其移植方法。 【实验环境】 1、Ubuntu 7.0.4发行版 2、u-boot-1.3.1 3、FS2410平台 4、交叉编译器 arm-softfloat-linux-gnu-gcc-3.4.5 【实验步骤】 一、建立自己的平台...

    Unix Domain Sockets for Tcl-开源

    通常,它会定义一个或多个`package provide`语句,指定包的名称和版本,以及对应的`source`或`binary`指令,指向库文件。 3. **teapot.txt**:可能是一个包含文档、示例或测试用例的文本文件。"teapot"在Tcl社区中...

    如何使用PHP Embed SAPI实现Opcodes查看器

    在描述中,通过`./configure`命令配置编译选项,例如启用Embed SAPI、指定配置文件扫描目录、设置MySQL支持等,然后使用`make`和`make install`进行编译和安装。安装完成后,确保动态链接库`libphp5.so`被正确放置到...

    botlistcraw

    根据描述“吡so属”,这可能是项目名称或者一种特定的功能描述,但这个词组在标准中文里没有明确的对应含义,可能是输入错误或者是某个特定领域的术语。不过,由于标签指明了“JavaScript”,我们可以推测这个项目是...

Global site tag (gtag.js) - Google Analytics