Unity中安卓崩溃日志处理记录

通过ADB命令可以连接手机获取设备日志,使用adblogcat-vtime>myLog.txt命令记录日志。FirebaseCrashlytics能捕获APP上线后的崩溃和ANR堆栈信息,Unity打包时需生成symbols.zip以辅助分析。堆栈信息通过NDK的addr2line工具可转换为具体函数,谷歌支持上传symbol文件以优化解析过程。
摘要由CSDN通过智能技术生成

1:如果发生问题的设备在手边,则可以通过ADB 命令连接手机,获取到设备发生时的日志

adb.exe 在(SDK\platform-tools),也可以添加到环境变量PATH中使用,

使用cmd命令行连接设备:

adb connect 127.0.0.1:5555(Ip地址:端口号 一般为5554或者5555)

获取设备的所有日志及当前的日志: adb logcat -v time > d:\myLog.txt  ctrl+c停止获取

获取某个时间之后的日志: adb logcat -t "2023-6-30 09:10:00.001" >d:/logs/aa.txt

可以将日志输出到电脑中

2:接入firebase.Crashlytics,可以收到APP上线后的崩溃和ANR时发生的堆栈信息,

Unity打包时需要选择BuildSettings->Create symbols.zip Debugging或者Public,这样可以获得symbols文件,当Crashlytics中获取到堆栈信息的时候可以通过工具查看堆栈信息的具体函数

如:堆栈信息:

#00 pc 0x22af08 libunity.so (libunity.0x22af08) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#01 pc 0x33b5d9 libunity.so (libunity.0x33b5d9) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#02 pc 0x3f4a1f libunity.so (libunity.0x3f4a1f) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#03 pc 0x3f510d libunity.so (libunity.0x3f510d) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#04 pc 0x28d8a7 libunity.so (libunity.0x28d8a7) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#05 pc 0x28d8c9 libunity.so (libunity.0x28d8c9) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#06 pc 0x28da5b libunity.so (libunity.0x28da5b) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#07 pc 0x3a9cab libunity.so (libunity.0x3a9cab) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#08 pc 0x3b91a5 libunity.so (libunity.0x3b91a5) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#09 pc 0x2a82941 base.odex (base.0x2a82941)

然后通过NDK工具可以解析为具体函数:

查看堆栈日志:

32位:

D:\UnityHub\2021.3.26f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin

命令:arm-linux-androideabi-addr2line -f -C -e .\symbols\armeabi-v7a\libunity.so 0x3b91a5

64位:

D:\UnityHub\2021.3.26f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin

命令:aarch64-linux-android-addr2line -f -C -e .\symbols\armeabi-v7a\libunity.so 0xbd1e44

其实谷歌有提供上传symbol文件的功能,这样在解析的时候就可以直接获得可以看懂的日志

Unity提供了一个插件:

配合以下正则也可以捕获Firebase的堆栈:

\s*#\d{2}\s*pc\s(?<address>0x[a-fA-F0-9]+).*(?<libName>lib.*)\.so

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值