Unity使用addr2line 定位Andorid错误地址 对应函数

xzhuan原创稿件,转载请注明出处!

1. 案例: Android真机闪退
2. 需求:定位报错位置
错误日志如下
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.0026d974(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.0026d8ec(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.005bf240(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.005bf8ec(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.005b1aa0(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.005b1ad8(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.005b1cb0(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.0069b8e4(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at libunity.006a9afc(Native Method)
04-28 16:15:07.583  2256  2278 E MessageQueue:  at Unknown.0dfffffc(Unknown Source)

3. 使用ndk包含的addr2line.exe工具
目录位置是    android-ndk-xxx\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe
android-ndk-xxx是自己ndk名子

4. libunity.so目录UnityXXX\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Symbols\armeabi-v7a\libunity.sym.so
unity目录UnityXXX替换成自己的
armeabi-v7a编译时用的库要对上(我这里测试用的这个)

5. 新建bat文件,填写如下
.\arm-linux-androideabi-addr2line.exe -f -C -e libunity.sym.so 0026d974
自己对下目录位置

6. 双击执行bat  输出如下
D:\Program Files\Unity2018.4.16f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Symbols\armeabi-v7a>D:\sdk\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe -f -C -e libunity.sym.so 0026d974
AssetBundleLoadFromAsyncOperation::TryToLoadAndInitializeAssetBundle()
??:?

这样就能定位 出错的大概位置了
注意: 混淆、加密过代码的工程 不适用
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容