Android 캡처 Tombstone, crash, anr 프로세스
키워드:Activity Manager Service addErrorToDropBox() DropBox Manager
DropBox Manager는 다음 시기에 관련 정보를 캡처합니다.
a. 이상 종료 전
시스템서버는 다음과 같은 종류의 오류 보고를 수집합니다:watchdog, anr, wtf,lowmem,nativecrash、crash
TAG = watchdog、anr、wtf、lowmem、native_crash、crash
Activity Manager Service를 통해 수행됩니다.addErrorToDropBox () 인터페이스로 정보를 수집하여 DropBox에 추가합니다. 더 많은 로그를 캡처하기 위해 addErrorToDropBox () 인터페이스를 차단할 수 있습니다.
12883 public void addErrorToDropBox(String eventType,
12884 ProcessRecord process, String processName, ActivityRecord activity,
12885 ActivityRecord parent, String subject,
12886 final String report, final File logFile,
12887 final ApplicationErrorReport.CrashInfo crashInfo) {
12888 // NOTE -- this must never acquire the ActivityManagerService lock,
12889 // otherwise the watchdog may be prevented from resetting the system.
12890
b. 원생/data/tombstones 디렉터리에 관찰자 등록
TAG = SYSTEM_TOMBSTONE
만약 시스템이tombstone를 던져서 꺼지지 않았다면, 이번에dd를 DropBox에 잘못 보고할 것입니다. 이것은 DropBoxManager를 통해.addText () 인터페이스에서 DropBox에 정보를 추가합니다.
sTombstoneObserver = new FileObserver(TOMBSTONE_DIR.getPath(), FileObserver.CLOSE_WRITE) {
@Override
public void onEvent(int event, String path) {
try {
File file = new File(TOMBSTONE_DIR, path);
if (file.isFile()) {
addFileToDropBox(db, prefs, headers, file.getPath(), LOG_SIZE, "SYSTEM_TOMBSTONE");
}
} catch (IOException e) {
Slog.e(TAG, "Can't log tombstone", e);
}
}
};
이 논리는frameworks/base/core/java/com/android/server/BootReceiver에 있습니다.java 파일에서
c、frameworks/base/core/java/com/android/server/BootReceiver.java에 켜진 후 이상 정보를 잡는 논리가 있습니다
전체 시스템 재부팅 후(Kernel 및 Flyme): TAG = SYSTEMBOOT
Flyme 재부팅: TAG = SYSTEMRESTART
Recovery에서 시작: TAG = SYSTEMRECOVERY_LOG
전원 켜기 검사/data/tombstones 디렉토리: TAG = SYSTEMTOMBSTONE
전원을 켠 후 원생 논리는 이미 약간의 정보를 잡았지만, 많고 가늘지는 않았다.
권장 사항:
SYSTEMBOOT일 때 로그를 잡지 않아도 됩니다. 전체 기기가 재부팅되어 모든 정보가 삭제됩니다.
SYSTEMRESTART 시 안드로이드와kernel 로그를 캡처할 수 있습니다. 이 때 유용한 정보를 캡처할 수 있지만, 켜진 지 오래되어 이상 로그가 삭제되었을 수도 있습니다.
SYSTEMRECOVERY_LOG 시, 이거 원생대로 하면 돼요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.