获取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

相关推荐
Jeled10 小时前
Android 网络层最佳实践:Retrofit + OkHttp 封装与实战
android·okhttp·kotlin·android studio·retrofit
信田君952710 小时前
瑞莎星瑞(Radxa Orion O6) 基于 Android OS 使用 NPU的图片模糊查找APP 开发
android·人工智能·深度学习·神经网络
tangweiguo0305198710 小时前
Kotlin 实现 Android 网络状态检测工具类
android·网络·kotlin
nvvas11 小时前
Android Studio JAVA开发按钮跳转功能
android·java·android studio
怪兽201411 小时前
Android多进程通信机制
android·面试
叶羽西12 小时前
Android CarService调试操作
android
千里马-horse12 小时前
在android中 spdlog库的log如何在控制台上输出
android·c++·spdlog
Zender Han12 小时前
《从零搭建现代 Android 模块化架构项目(2025 最新实践)》
android·架构
Digitally13 小时前
如何从电脑上卸载安卓应用程序
android·电脑
Mr YiRan13 小时前
多线程性能优化基础
android·java·开发语言·性能优化