linux addr2line,定位so文件崩溃代码行数

当遇到使用别人的ndk时,so文件崩溃的问题,可以通过addr2line工具来定位崩溃代码行数。步骤包括找到addr2line工具,打开命令行,输入so文件路径及内存地址,从而获取到出错的具体代码行。此方法对于解决C/C++底层崩溃问题非常有帮助。
摘要由CSDN通过智能技术生成

当我们使用别人的ndk时,可能别人的so文件会崩溃,这个时候需要定位该so文件崩溃的代码的行数,即哪一行。方法如下:

1、找到ndk下面的该目录:D:\IT\AndroidStudio\SDK\ndk\22.1.7171670\toolchains\x86-4.9\prebuilt\windows-x86_64\bin

2、找到i686-linux-android-addr2line.exe

3、在有i686-linux-android-addr2line.exe的目录里,点击最上面的url路径,输入cmd,然后点击回车,会出现如下图片

4、然后输入so文件路径,以及地址,点击回车,最后定位到的就是so文件里面发送错误的行数

以下是其他地方拷贝过来的

到ndk找到addr2line,例如:

/Users/yangjun/Library/Android/sdk/ndk/android-ndk-r9d/toolchains/x86-4.8/prebuilt/darwin-x86_64/bin/i686-linux-android-addr2line

然后执行:

./i686-linux-android-addr2line -f -C -e 带符号so的文件路径 地址

示例:

./i686-linux-android-addr2line -f -C -e /Users/yangjun/git/dingtalk/TBLiveStream-Android/artc-core/src/main/obj/local/armeabi-v7a/libTaoLive.so 0x33308

_JNIEnv::NewStringUTF(char const*)

/Users/liuyouxue/Library/Android/sdk/ndk/android-ndk-r9d/platforms/android-16/arch-arm/usr/include/jni.h:873

./i686-linux-android-addr2line -f -C -e /Users/yangjun/git/dingtalk/TBLiveStream-Android/artc-core/src/main/obj/local/armeabi-v7a/libTaoLive.so 0x476e4

TaoLivePublishEngine_Impl::onCsd(int, Buffer_Struct const&)

/Users/liuyouxue/work/android/dingding/c-bug/TBLiveStream-Android/artc-core/src/main/jni/LiveMediaFramework/fw/engine/TaoLivePublishEngine_Impl.cpp:856

./i686-linux-android-addr2line -f -C -e /Users/yangjun/git/dingtalk/TBLiveStream-Android/artc-core/src/main/obj/local/armeabi-v7a/libTaoLive.so 0x49cd8

FAACEncoder::configure(encode_param const&)

/Users/liuyouxue/work/android/dingding/c-bug/TBLiveStream-Android/artc-core/src/main/jni/LiveMediaFramework/fw/codec/FAACEncoder.cpp:82

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值