首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

addr2line 动态库

但是利用addr2line这个工具,就可以找到对应的代码行。前提条件是可执行程序或者动态链接库编译的时候带-g选项。...具体来说,分两种情况: 如果关注的一行backtrace位于一个可执行文件中,那么直接addr2line -e 如果关注的backtrace位于一个动态链接库中...然后在这个文件中找到动态链接库的基地址,然后将backtrace中的地址 – 动态链接库的基地址,得到偏移地址offset address, 最后addr2line -e <shared library...不过相比addr2line,GDB需要将BUG现象重现一遍,所以对于不好重现的BUG,或是随机重现的BUG来说,使用addr2line就可以直接从backtrace找到对应的代码行,不需要重现现象,比GDB...有上面的认识后那我们就只需要得到此次libadd.so的加载地址然后用0x7f85839fa5c6这个地址减去libadd.so的加载地址得到的结果再利用addr2line命令就可以正确的得到出错的地方

2.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

使用addr2line分析Native Crash

常用的地址转换工具有addr2line、ndk-stack等,个人比较喜欢addr2line,所以接下来介绍下该工具的基本使用方式 addr2line简介 使用-h参数查看工具的可选参数配置 日常使用过程中...其中NDK中的aarch64-linux-android-c++fil(和addr2line同一个目录)是专门用来支持Demangle的 addr2line使用示例 新建一个带C++的Android Studio...工程,主动创造一个native crash 启动app后如预期崩溃 抓到崩溃信息后,根据ABI找到相对应的addr2line工具和带符号表的so文件。...我们主要关注backtrace后面的信息,同时带"pc"和"/data"的行基本就是app相关的崩溃行了 除了最后一个是被strip了符号的so,前三个so文件都是可以的 终端中使用addr2line

1.8K10

【Android NDK 开发】NDK CC++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

文章目录 一、从 Tombstone 报错日志中查找报错动态库 二、addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工具...32 位动态库使用的 arm-linux-androideabi-addr2line.exe 工具 使用 addr2line 命令行工具分析动态库 Tombstone 报错信息日志文件被保存在了 /data...命令行工具进行确定 ; 二、addr2line 命令行工具使用 ---- 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工具 在 Android NDK...开发中 , 使用的 addr2line 命令行工具是在 SDK 的 ndk-bundle\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86...arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin 目录下的 arm-linux-androideabi-addr2line.exe ; 使用 addr2line

89310

写了个 AS 插件:SmartNDKStack,快速定位 Android Native 开发 Crash

对于Android Native开发的人员而言,可能经常会在开发过程及线上环境中遇到Native Crash的问题,对于这类native crash,我们一般都会直接addr2line,或使用ndk中附带的...如何解析 常规操作 addr2line -Cfie libndkdemo.so 0xf0c8 网上的大部分教程都是直接进行如上的addr2line操作,对于自己开发过程中直接运行出现了crash的确可以快速定位...,但如果代码已发生变更,库不匹配了,定位效率就会大幅下降,比如测试报了crash,但是本地代码已发生变更,库不匹配,如果想拿到build id相同的库,就要回退到当时的代码,重新编一个一样的库再做addr2line...本地库发生变更 修改其他函数,使crash所在的函数地址变更,变更后函数地址是0xf0a0,0xf0a0 + 0x34 = 0xf0d4使用新的地址addr2line,可以发现,此时buildId虽然发生变更

2.2K60

linux后台开发常用调试工具

获取二进制文件包含的字符串常量 strip 去除二进制文件包含的符号 readelf 显示目标文件详细信息 objdump 尽可能反汇编出源代码 addr2line...addr2line(根据地址查找代码行) 当某个进程崩溃时,日志文件(/var/log/messages)中就会给出附加的信息,包括程序终止原因、故障地址,以及包含程序状态字(PSW)、通用寄存器和访问寄存器的简要寄存器转储...eg:Mar 31 11:34:28 l02 kernel: failing address: 0 如果可执行文件包括调试符号(带-g编译的),使用addr2line,可以确定哪一行代码导致了问题。...eg:addr2line –e exe addr 其实gdb也有这个功能,不过addr2line的好处是,很多时候,bug很难重现,我们手上只有一份crash log。...这样就可以利用addr2line找到对应的代码行,很方便。 注意: 1. 该可执行程序用-g编译,使之带调试信息。 2. 如果crash在一个so里面,那addr2line不能直接给出代码行。

3.7K151

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券