关于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