获取Android和iOS崩溃日志的方法

文章目录

一、Android崩溃日志

1、获取方法

1.1 通过adb logcat获取

bash 复制代码
# 清除日志,新手上路时,日志内容很多,对于能必现的日志,可以先清除后重新获取
adb logcat -c
# 然后再次运行崩溃操作,再抓取日志
# 存储日志到当前目录下的 carsh.log 中
adb logcat -d *:W > crash.log 
# W指的是警告以上日志
# 这个日志文件包含了所有打印的日志,需要自己筛选下崩溃日志,比如搜索 begin、crash、Exception
# 为了更精确的筛选日志,可以加入筛选条件
adb logcat -d *:W grep "包名" >crash.log

1.2 通过adb shell dumpsys dropbox命令获取

封装成shell脚本,可以快速打印最新的崩溃日志

bash 复制代码
#!/bin/bash
# path="/data/system/dropbox"   # 在手机这个目录下存储了崩溃日志
newest_time=$(adb shell dumpsys dropbox | grep 'data_app_crash' | awk 'END {print $1,$2}')
adb shell dumpsys dropbox --print ${newest_time}
# echo -e "时间是:${newest_time}"

2、导出设备Crash日志

bash 复制代码
adb pull /storage/emulated/0/Android/data/com.xxx.comic/files/xxx/crash

3、导出设备ANR日志

bash 复制代码
adb bugreport

4、常见日志类别

常见的异常:javaException(runtimeException):

  • NullPointerException-空指针引用异常
  • ClassCastException-类型强制转换异常
  • IllegalArgumentException-传递非法参数异常
  • ArithmeticException-算术运算异常
  • ArrayStoreException-向数组中存放与声明类型不兼容对象异常
  • IndexOutOfBoundsException-下标越界异常
  • NegativeArraySizeException-创建一个大小为负数的数组错误异常
  • NumberFormatException-数字格式异常
  • SecurityException-安全异常
  • UnsupportedOperationException-不支持的操作异常

二、iOS崩溃日志

1、获取方法

1.1 xcode中打开

打开xcode->windows->Devices and Simulators,选中设备查看View Device Logs,导出对应的log。

1.2 手机上直接获取

手机打开设置 -> 隐私 -> 分析与改进 -> 分析数据,在列表页找到对应项目的crash报告,分享到微信。 (导出的是.ips文件,后缀改为.crash)

2、Crash 头部信息

Incident Identifier:每个 Crash 生成的唯一的 uuid

CrashReporter Key:CrashReporter 的 uuid,如果自己捕获日志,这个可以忽略

Hardware Model:机型,如:iPhone12,3

Process:进程名和进程ID

Path:进程的可执行文件路径

Identifier:Info.plist 中配置的 CFBundleIdentifier 值,如:com.xxx.comic

Version:CFBundleVersion (CFBundleVersionShort) 即应用的Build号+版本号,如:7.58.0 (64906)

Architecture:机型的 CPU 架构,但是不是详细的架构名。比如 arm64e 在这里也是 ARM-64

Parent Process:父进程和进程ID

Data/Time:Crash发生的具体时间,如:2023-12-26 14:54:50.565 +0800

Launch Time:进程启动时间

OS Version:iOS 系统版本和 build号,如:iPhone OS 16.0.2 (Build 20A380)

Report Version:Crash日志格式的版本号,一般是 104。如果这个version偏高,用系统的symbolicatecrash命令不能符号化日志,一般如果看到是204, 改成104之后symbolicatecrash就可以符号化了

参考:https://www.cnblogs.com/-lisunman/p/11613029.html

相关推荐
baidu_2474386119 小时前
Android ViewModel定时任务
android·开发语言·javascript
有位神秘人20 小时前
Android中Notification的使用详解
android·java·javascript
·云扬·20 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
独自破碎E21 小时前
【BISHI9】田忌赛马
android·java·开发语言
代码s贝多芬的音符1 天前
android 两个人脸对比 mlkit
android
darkb1rd1 天前
五、PHP类型转换与类型安全
android·安全·php
gjxDaniel1 天前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
csj501 天前
安卓基础之《(22)—高级控件(4)碎片Fragment》
android
峥嵘life1 天前
Android16 【CTS】CtsMediaCodecTestCases等一些列Media测试存在Failed项
android·linux·学习
stevenzqzq1 天前
Compose 中的状态可变性体系
android·compose