使用arm-linux-androideabi-addr2line 定位Unity Android 段错误
arm-linux-androideabi-addr2line是NDK中提供的將內存地址轉換成行號的一個工具,通俗具體點就是根據各種日志,譬如trace日志和tomestone日志中包含的so庫日志的中偏移內存地址,定位到具體是在那個文件的那一行。Unity的安裝目錄中,如果安裝了NDK,就會自帶這個工具
比如我的路徑如下(windows版本工具)
F:\Unity\2019.4.11f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin
有了這個工具,需要根據logcat抓來的log來看是哪個so出現的問題
比如:
libc.__memcpy?(__memcpy:232)
libGLESv2_adreno.0x3378cc
libGLESv2_adreno.0x15e5a4
libGLESv2_adreno.0x156e78
libunity.0x73e900
libunity.0x873240
libunity.0x7440a0
libunity.0x8dfb6c
libunity.0xc59e54
libunity.0xc61930
libunity.0xc59880
libunity.0x5c3ba0
libc.__pthread_start(void*)?(__pthread_start:64)
libc.__start_thread?(__start_thread:64)
所以可以用這個工具去定位libunity.so哪行代碼出了問題,libunity.so的符合文件路徑也是在Unity的安裝路徑下:
之后啟動windows命令行工具,輸入./aarch64-linux-android-addr2line -f -C -e .\libunity.sym.so 0x73e900
會得到結果為:
根據輸出結果來幫助定位哪塊出現了問題
參考文章鏈接:
https://blog.csdn.net/tkwxty/article/details/103493624
https://www.cnblogs.com/TravelingLight/p/10110318.html
總結
以上是生活随笔為你收集整理的使用arm-linux-androideabi-addr2line 定位Unity Android 段错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity shader图集Atlas下
- 下一篇: 黄泉凶兽肆虐 大荒何去何从?《天下3》全