一、捕获日志
-
连接设备:
- 确保你的 Android 设备通过 USB 连接到电脑,并且 USB 调试已启用。
- 打开命令行或终端窗口。
-
验证设备连接:
- 使用以下命令验证设备是否正确连接:
adb devices
- 如果设备已连接,你将看到类似以下输出:
List of devices attached emulator-5554 device
3.捕获日志:
- 使用
adb logcat
命令捕获日志,并将输出重定向到文件。命令如下:adb logcat -v time > D:\log.txt
-
这条命令会启动日志捕获,并将日志按时间戳格式记录到
D:\log.txt
文件中。
- 使用
- 使用以下命令验证设备是否正确连接:
二、重现问题
在捕获日志的过程中,执行可能导致崩溃(Crash)或应用无响应(ANR)的问题操作,尽量重现这些问题。捕获到的日志将包含这些事件的详细信息。
三、停止日志捕获
当问题重现并且日志已捕获完成时,可以通过以下方式停止日志捕获:
- 停止日志捕获:
- 在命令行或终端窗口中按
Ctrl + C
停止adb logcat
命令。
- 在命令行或终端窗口中按
四、分析日志
-
打开日志文件:
- 使用文本编辑器(如 Notepad++、Sublime Text、VSCode)打开
D:\log.txt
文件。
- 使用文本编辑器(如 Notepad++、Sublime Text、VSCode)打开
-
查找崩溃日志:
- 使用搜索功能查找关键字
E/AndroidRuntime
或FATAL EXCEPTION
来定位崩溃日志。 - 关键日志通常包含异常类型(如
NullPointerException
)、错误信息和堆栈跟踪。
- 使用搜索功能查找关键字
示例崩溃日志:
07-03 12:34:56.789 E/AndroidRuntime(12345): FATAL EXCEPTION: main
07-03 12:34:56.789 E/AndroidRuntime(12345): Process: com.example.myapp, PID: 12345
07-03 12:34:56.789 E/AndroidRuntime(12345): java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
07-03 12:34:56.789 E/AndroidRuntime(12345): at com.example.myapp.MainActivity.onCreate(MainActivity.java:25)
07-03 12:34:56.789 E/AndroidRuntime(12345): ...
- 查找 ANR 日志:
- 使用搜索功能查找关键字
ANR in
来定位 ANR 日志。 - 关键日志通常包含引发 ANR 的原因、进程信息和堆栈跟踪。
- 使用搜索功能查找关键字
示例 ANR 日志:
07-03 12:35:10.123 E/ActivityManager( 123): ANR in com.example.myapp (com.example.myapp/.MainActivity)
07-03 12:35:10.123 E/ActivityManager( 123): PID: 12345
07-03 12:35:10.123 E/ActivityManager( 123): Reason: Input dispatching timed out (Waiting because no window has focus but there is a focused application that may eventually add a window when it finishes starting up.)
07-03 12:35:10.123 E/ActivityManager( 123): Load: 3.45 / 2.31 / 2.10
07-03 12:35:10.123 E/ActivityManager( 123): CPU usage from 8962ms to 0ms ago (2023-07-03 12:35:00.849 to 2023-07-03 12:35:10.811):
07-03 12:35:10.123 E/ActivityManager( 123): 85% 12345/com.example.myapp: 83% user + 2% kernel / faults: 400 minor 2 major
07-03 12:35:10.123 E/ActivityManager( 123): ...