Android 캡처 Tombstone, crash, anr 프로세스

2547 단어
다음으로 이동:https://blog.csdn.net/guoqifa29/article/details/46833561
키워드: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 시, 이거 원생대로 하면 돼요.

좋은 웹페이지 즐겨찾기