在 Android 开发中,有时会遇到 ANR,一旦出现 ANR 我们就需要拿到对应的trace 文件来分析并解决。本文将介绍两种获取 ANR 的方法。
第一种
直接查看/data/anr/traces.txt
的内容,如下
1
| adb shell cat /data/anr/traces.txt
|
或者类似使用拷贝到电脑上查看,比如
1
2
| adb shell cp /data/anr/traces.txt /sdcard
adb pull /sdcard/traces.txt ./
|
但是这种方法在某些手机上由于权限原因,无法进行,就需要了使用下面的方法了。
第二种
这种方法就是进行adb bugreport
,没有权限限制问题。具体步骤是
生成 bugreport 文件
1
2
3
| adb bugreport
/data/user_de/0/com.android.shell/files/bugreports/bugreport-sailfish-QP1A.191005.007.A3-2021-01-12-15-30-21.zip: 1 file pulled, 0 skipped. 30.6 MB/s (3897489 bytes in 0.121s)
Bug report copied to /private/tmp/bugreport-sailfish-QP1A.191005.007.A3-2021-01-12-15-30-21.zip
|
进行解压文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
| unzip bugreport-sailfish-QP1A.191005.007.A3-2021-01-12-15-32-54.zip
Archive: bugreport-sailfish-QP1A.191005.007.A3-2021-01-12-15-32-54.zip
inflating: version.txt
inflating: proto/SurfaceFlinger_CRITICAL.proto
inflating: proto/activity_CRITICAL.proto
inflating: proto/window_CRITICAL.proto
inflating: FS/data/anr/anr_2021-01-12-14-59-10-559
inflating: FS/data/misc/recovery/last_log
inflating: FS/data/misc/recovery/last_kmsg
inflating: FS/data/misc/recovery/ro.build.fingerprint
inflating: FS/data/misc/recovery/proc/version
inflating: FS/data/misc/update_engine_log/update_engine.19700914-172433
inflating: FS/proc/1/mountinfo
inflating: FS/proc/642/mountinfo
inflating: FS/proc/643/mountinfo
inflating: FS/proc/934/mountinfo
inflating: FS/proc/2592/mountinfo
inflating: FS/proc/2619/mountinfo
inflating: FS/proc/2882/mountinfo
inflating: FS/proc/3011/mountinfo
inflating: FS/proc/3031/mountinfo
inflating: FS/proc/3053/mountinfo
inflating: FS/proc/3198/mountinfo
inflating: FS/proc/3255/mountinfo
inflating: FS/proc/3409/mountinfo
inflating: FS/proc/3476/mountinfo
inflating: FS/proc/3584/mountinfo
inflating: FS/proc/3605/mountinfo
inflating: FS/proc/3637/mountinfo
inflating: FS/proc/3664/mountinfo
inflating: FS/proc/3673/mountinfo
inflating: FS/proc/3706/mountinfo
inflating: FS/proc/3732/mountinfo
inflating: FS/proc/3782/mountinfo
inflating: FS/proc/3802/mountinfo
inflating: FS/proc/3832/mountinfo
inflating: FS/proc/3906/mountinfo
inflating: FS/proc/3930/mountinfo
inflating: FS/proc/4582/mountinfo
inflating: FS/proc/5746/mountinfo
inflating: FS/proc/6563/mountinfo
inflating: FS/proc/7454/mountinfo
inflating: FS/proc/7717/mountinfo
inflating: FS/proc/8349/mountinfo
inflating: FS/proc/8367/mountinfo
inflating: FS/proc/8396/mountinfo
inflating: FS/proc/8748/mountinfo
inflating: FS/proc/8838/mountinfo
inflating: FS/proc/8862/mountinfo
inflating: FS/proc/8896/mountinfo
inflating: FS/proc/8941/mountinfo
inflating: FS/proc/10157/mountinfo
inflating: FS/proc/10412/mountinfo
inflating: FS/proc/26397/mountinfo
inflating: FS/proc/26468/mountinfo
inflating: FS/proc/27133/mountinfo
inflating: FS/proc/27518/mountinfo
inflating: FS/proc/29094/mountinfo
inflating: FS/proc/29279/mountinfo
inflating: FS/proc/29701/mountinfo
inflating: FS/proc/31908/mountinfo
inflating: lshal-debug/android.frameworks.cameraservice.service@2.0::ICameraService_default.txt
inflating: lshal-debug/android.frameworks.displayservice@1.0::IDisplayService_default.txt
inflating: lshal-debug/android.frameworks.schedulerservice@1.0::ISchedulingPolicyService_default.txt
inflating: lshal-debug/android.frameworks.sensorservice@1.0::ISensorManager_default.txt
inflating: lshal-debug/android.frameworks.stats@1.0::IStats_default.txt
inflating: lshal-debug/android.hardware.atrace@1.0::IAtraceDevice_default.txt
inflating: lshal-debug/android.hardware.audio.effect@5.0::IEffectsFactory_default.txt
inflating: lshal-debug/android.hardware.audio@5.0::IDevicesFactory_default.txt
inflating: lshal-debug/android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint_default.txt
inflating: lshal-debug/android.hardware.bluetooth.audio@2.0::IBluetoothAudioProvidersFactory_default.txt
inflating: lshal-debug/android.hardware.bluetooth@1.0::IBluetoothHci_default.txt
inflating: lshal-debug/android.hardware.boot@1.0::IBootControl_default.txt
inflating: lshal-debug/android.hardware.camera.provider@2.4::ICameraProvider_legacy_0.txt
inflating: lshal-debug/android.hardware.cas@1.0::IMediaCasService_default.txt
inflating: lshal-debug/android.hardware.cas@1.1::IMediaCasService_default.txt
inflating: lshal-debug/android.hardware.configstore@1.0::ISurfaceFlingerConfigs_default.txt
inflating: lshal-debug/android.hardware.configstore@1.1::ISurfaceFlingerConfigs_default.txt
inflating: lshal-debug/android.hardware.contexthub@1.0::IContexthub_default.txt
inflating: lshal-debug/android.hardware.drm@1.0::ICryptoFactory_clearkey.txt
inflating: lshal-debug/android.hardware.drm@1.0::ICryptoFactory_default.txt
inflating: lshal-debug/android.hardware.drm@1.0::ICryptoFactory_widevine.txt
inflating: lshal-debug/android.hardware.drm@1.0::IDrmFactory_clearkey.txt
inflating: lshal-debug/android.hardware.drm@1.0::IDrmFactory_default.txt
inflating: lshal-debug/android.hardware.drm@1.0::IDrmFactory_widevine.txt
inflating: lshal-debug/android.hardware.drm@1.1::ICryptoFactory_clearkey.txt
inflating: lshal-debug/android.hardware.drm@1.1::ICryptoFactory_widevine.txt
inflating: lshal-debug/android.hardware.drm@1.1::IDrmFactory_clearkey.txt
inflating: lshal-debug/android.hardware.drm@1.1::IDrmFactory_widevine.txt
inflating: lshal-debug/android.hardware.drm@1.2::ICryptoFactory_clearkey.txt
inflating: lshal-debug/android.hardware.drm@1.2::IDrmFactory_clearkey.txt
inflating: lshal-debug/android.hardware.gatekeeper@1.0::IGatekeeper_default.txt
inflating: lshal-debug/android.hardware.gnss@1.0::IGnss_default.txt
inflating: lshal-debug/android.hardware.graphics.composer@2.1::IComposer_default.txt
inflating: lshal-debug/android.hardware.health@2.0::IHealth_backup.txt
inflating: lshal-debug/android.hardware.health@2.0::IHealth_default.txt
inflating: lshal-debug/android.hardware.keymaster@3.0::IKeymasterDevice_default.txt
inflating: lshal-debug/android.hardware.light@2.0::ILight_default.txt
inflating: lshal-debug/android.hardware.media.c2@1.0::IComponentStore_software.txt
inflating: lshal-debug/android.hardware.media.omx@1.0::IOmx_default.txt
inflating: lshal-debug/android.hardware.media.omx@1.0::IOmxStore_default.txt
inflating: lshal-debug/android.hardware.memtrack@1.0::IMemtrack_default.txt
inflating: lshal-debug/android.hardware.nfc@1.0::INfc_default.txt
inflating: lshal-debug/android.hardware.nfc@1.1::INfc_default.txt
inflating: lshal-debug/android.hardware.power@1.0::IPower_default.txt
inflating: lshal-debug/android.hardware.power@1.1::IPower_default.txt
inflating: lshal-debug/android.hardware.radio.deprecated@1.0::IOemHook_slot1.txt
inflating: lshal-debug/android.hardware.radio@1.0::IRadio_slot1.txt
inflating: lshal-debug/android.hardware.radio@1.0::ISap_slot1.txt
inflating: lshal-debug/android.hardware.radio@1.1::IRadio_slot1.txt
inflating: lshal-debug/android.hardware.radio@1.1::ISap_slot1.txt
inflating: lshal-debug/android.hardware.sensors@1.0::ISensors_default.txt
inflating: lshal-debug/android.hardware.soundtrigger@2.0::ISoundTriggerHw_default.txt
inflating: lshal-debug/android.hardware.soundtrigger@2.1::ISoundTriggerHw_default.txt
inflating: lshal-debug/android.hardware.soundtrigger@2.2::ISoundTriggerHw_default.txt
inflating: lshal-debug/android.hardware.thermal@1.0::IThermal_default.txt
inflating: lshal-debug/android.hardware.thermal@2.0::IThermal_default.txt
inflating: lshal-debug/android.hardware.usb@1.0::IUsb_default.txt
inflating: lshal-debug/android.hardware.usb@1.1::IUsb_default.txt
inflating: lshal-debug/android.hardware.vr@1.0::IVr_default.txt
inflating: lshal-debug/android.hardware.wifi.supplicant@1.0::ISupplicant_default.txt
inflating: lshal-debug/android.hardware.wifi.supplicant@1.1::ISupplicant_default.txt
inflating: lshal-debug/android.hardware.wifi.supplicant@1.2::ISupplicant_default.txt
inflating: lshal-debug/android.hardware.wifi@1.3::IWifi_default.txt
inflating: lshal-debug/android.hidl.allocator@1.0::IAllocator_ashmem.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_AtCmdFwdService.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_ashmem.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_backup.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_clearkey.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_legacy_0.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_slot1.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_software.txt
inflating: lshal-debug/android.hidl.base@1.0::IBase_widevine.txt
inflating: lshal-debug/android.hidl.token@1.0::ITokenManager_default.txt
inflating: lshal-debug/android.system.net.netd@1.0::INetd_default.txt
inflating: lshal-debug/android.system.net.netd@1.1::INetd_default.txt
inflating: lshal-debug/android.system.wifi.keystore@1.0::IKeystore_default.txt
inflating: lshal-debug/vendor.qti.atcmdfwd@1.0::IAtCmdFwd_AtCmdFwdService.txt
inflating: lshal-debug/vendor.qti.qcril.am@1.0::IQcRilAudio_default.txt
inflating: dumpstate_board.txt
inflating: proto/activity.proto
inflating: proto/incident.proto
inflating: proto/stats.proto
inflating: bugreport-sailfish-QP1A.191005.007.A3-2021-01-12-15-32-54.txt
inflating: main_entry.txt
inflating: dumpstate_log.txt
|
查看 ANR stacktrace 文件
文件路径通常为FS/data/anr
,具体可以根据日期来确定哪一个文件。
1
| cat FS/data/anr/anr_2021-01-12-14-59-10-559
|