首页 > 手游开发 > Unity3D > Unity使用addr2line 定位Andorid错误地址 对应函数
2022
11-13

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

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()
??:?

这样就能定位 出错的大概位置了
注意: 混淆、加密过代码的工程 不适用
最后编辑:
作者:游戏创作者大陆

留下一个回复

你的email不会被公开。