關於Unity的符號表


最近拾掇電腦硬盤時,整理出一批不記得什么年月寫下的隨筆,准備整理到博客上,以便之后的管理。

關於項目真機調試時的崩潰問題,一般可以logcat或xcode看到相關的crash日志,拿到崩潰時的堆棧信息,但是backtrace中的地址信息並不直接可見(非debug版本的so庫,並不包含符號表等調試信息),因此我們需要拿到對應的符號表,借助ndk的addr2line工具(arm-linux-androideabi-addr2line.exe,具體須根據調試環境選擇)來查看:

 

 

這里主要說下unity的符號表:libunity/libmain——Unity5.3.6開始的版本都有提供(unity的安裝目錄下):

個人開發主要在win平台,對應的符號表目錄如下:

其中1為平台,2為后端(il2cpp、mono),3為release或develop

 eg:

  • 安裝目錄\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Symbols\armeabi-v7a\libunity.sym.so
  • 安裝目錄\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Symbols\armeabi-v7a\libunity.sym.so

注1:調試時,符號表版本須與打包APK的Editor版本一致

注2:addr2line usage:arm-linux-androideabi-addr2line -f -C -e libunity.sym.so %addr_lst%

  • -f- Show function names 
  • -C- Demangle function names 
  • -e- Set the input file name

注3:cocos2dx亦然,沒有單獨的符號表文件,調試時使用debug版本的so庫文件即可:

注4:若crash的點在libil2cpp,則需要關注其符號表——發出apk包中的libil2cpp.so不包含符號表,需要使用打包apk時自動生成的壓縮包(.symbols.zip)下對應的文件:

 

 

arm-linux-androideabi-addr2line


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM