Android 시스템 로그에는 여러 가지 방법으로 도움이되는 흥미로운 내용이 많이 있습니다.
- 근본 원인 찾기 문제 수
- 오작동하는 앱 식별
Android 로그를보고 조사하려면 어떻게해야합니까?
댓글
- 댓글은 확장 토론을위한 것이 아닙니다. 이 대화는 채팅으로 이동 되었습니다.
답변
Android 4.1 이상
선호하는 방법은 SDK 를 다운로드하고 adb logcat
(기기에서 " 개발자 옵션 "을 활성화해야 함)
사용 가능한 앱이 있습니다. 전체 시스템 로그를 볼 수 있지만 루팅 된 기기에서만 작동하거나 작동하도록하려면 adb
를 통해 수동 명령을 실행해야합니다. 자세한 내용은 이 질문을 참조하세요.
Android 4.0 이상
SDK 를 사용하고 adb logcat
를 사용하거나 Logcat Extrem 을 휴대 전화에 직접 로그를 표시하는 Google Play 스토어
댓글
- 또는 logcat > /sdcard/log.txt" SD의 파일에 로그를 계속 기록합니다. 카드. 이렇게하면 무작위 재부팅 문제를 파악하는 데 도움이됩니다.
- 좋은 지적입니다. 일부 휴대 전화는 사소한 정보로 가득 찬 로그를 스팸하는 경향이 있으므로 통과 할 파일 크기와 데이터를 최소화하려면 " 로그 출력 필터링 developer.android.com/guide/developing/tools/adb.html#logcat
- LogCat 앱은 ' JellyBean에서는 더 이상 작동하지 않습니다. Google은 Android API를 변경했으며, 앱은 ' 자신의 앱이 아닌 다른 앱의 로그를 읽을 수있는 권한이 없습니다.
- 수집 할 간단한 유틸리티를 만들었습니다. PC의 로그 : gist.github.com/hrj/5983971
- Logcat Extreme은 로그보기에 좋은 앱입니다.
답변
로그 파일 위치
로그가있는 여러 디렉토리가 있습니다 (충돌로 인한 것 포함). 모두가 표준화 된 것은 아닙니다 (즉, 일부는 ROM에 따라 다를 수 있음).
-
/data/anr
: 일부 추적 파일이 여기에있는 것 같습니다. (Dalvik은 여기 ANR에 스택 추적을 작성합니다. 즉, “응용 프로그램이 응답하지 않음”(일명 “강제 종료”), 예를 들어 로그 발췌 여기 참조)) -
/data/dontpanic
는 표준 위치 (AOSP)로 보이며 추적을 포함한 일부 오류 로그를 포함합니다 (예 : Forensics를 통해 참조) 및 St ackOverflow ) -
/data/kernelpanics
는 다른 위치입니다. Android 기기에서 “커널 패닉”이 발생하지 않았기 때문에 아직 콘텐츠가 표시되지 않았습니다. -
/data/panic/panic_daemon.config
는 구성된 다른 위치를 가리킬 수 있습니다. Droid 2에서는/sdcard/panic_data/
- 언급 된 Droid 2에는
/data/panicreports
디렉토리 (여기에 비어 있음)도 있습니다. -
/data/tombstones
에는 여러tombstone_nn
파일 (nn
은 직렬이며 새 파일마다 증가 함). 삭제 표시는 죽은 사람을 위해 배치되기 때문에 여기서 “프로세스가 우연히 죽었습니다”(즉, 충돌)에 대해 수행되며 Linux / Unix 시스템에서 “코어 덤프”라고합니다. 그러나 모든 앱이 삭제 표시를 만드는 것은 아닙니다. 개발자가 명시 적으로 활성화해야합니다 ( Android 코어 덤프 디버깅 참조).
를 언급합니다.
더 많은 위치가있을 수 있습니다. 나를 탈출했다. 그러나 대부분의 로깅은 tmpfs
에서 수행되므로 이러한 데이터는 재부팅시 손실되고 OP 질문과 일치하지 않습니다.
터미널에서 사용할 로그 명령 app (또는 adb)
여러 명령을 사용하면 많은 정보를 얻을 수 있습니다. 대부분의 경우 파일 (> filename.ext
)로 리디렉션하거나 필터를 통해 파이프 (| grep search-for-this
)하는 것이 좋습니다. ) :
커널 로그
다음은 루트없이 작동합니다.
$ dmesg <6>[82839.126586] PM: Syncing filesystems ... done. <7>[82839.189056] PM: Preparing system for mem sleep <4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done. <4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. <snip>
Logcat
여기에서 예를 들어 관심 분야 지정-라디오, 이벤트 …
# logcat -b events I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721] I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721] I/notification_cancel( 3457): [nitro.phonestats,4,0] <snip>
기기 정보 가져 오기
그리고 그 종류 : 기기 세부 사항, 계정 정보, 서비스 …
$ dumpsys Currently running services: LocationProxyService SurfaceFlinger accessibility account activity <snip> DUMP OF SERVICE account: Accounts: 1 Account {[email protected], type=com.google} <snip> $ dumpstate ======================================================== == dumpstate: 2012-08-18 23:39:53 ======================================================== Build: Gingerbread GWK74 - CyanogenMilestone2 Bootloader: 0x0000 Radio: unknown <snip> ------ MEMORY INFO (/proc/meminfo) ------ MemTotal: 487344 kB MemFree: 10436 kB <snip>
올인원
logcat에서 dumpstate에 이르기까지 모든 것을 하나로 묶어 큰 공을 만드세요.
$ bugreport > /mnt/sdcard/bugreport.txt
마지막 명령을 리디렉션 하시겠습니까 … xD
권한에 대한 정보
PS : 대부분의 소스가 내부 저장소에 있으므로 이러한 정보에 액세스하려면 루트가 필요할 수 있습니다.
댓글
- adb logcat 명령에 대한 더 많은 정보를 얻으려면 여기 를 참조하세요.
- 아니면 로깅 태그 위키 @testing을 확인하세요. 더 많은 참조가 있습니다. 🙂
- " Android 코어 덤프 디버깅 "이 종료되었습니다. 대안을 얻을 수 있나요?
- @Spidey there '는 이러한 종류의 문제에 대해 항상 Archive.ORG 를 사용합니다 (링크는 작업 사본으로 이동합니다. 여기).
- Android를 처음 사용하는 저와 같은 다른 사용자의 경우 위의 명령을 실행하려면 먼저
$ adb shell
를 실행하여 기기에 연결해야합니다. 터미널을 통해. (물론 기기가 컴퓨터에 연결되어 있고 USB 디버깅이 켜져 있는지 확인하세요.)
답변
A는 CatLog 가 Android 로그를 aLogcat보다 조금 더 잘 표시한다는 것을 발견했습니다. adb logcat
외에도 그것이 제가 사용하고있는 것입니다.
댓글
- 위의 내 댓글을 참조하세요. LogCat 앱 관련.
- 질문을 업데이트했습니다. 상대 위치 정보 (예 : " 위 " )는 시간에 따라 답변 순서가 변경 될 수 있으므로 쉽게 구식이 될 수 있습니다.
답변
A 새 Android 버전에서도 작동하는 루트가없는 방법 :
전제 조건 :
- Linux, Windows 또는 Mac
- 기기 용 USB 케이블
- Android 기기
지침 :
- adb를 사용하기위한 기기 드라이버를 설치하세요. 필요한 모든 것을 찾을 수 있습니다. 여기
- OS 용 adb 실행 파일을 다운로드합니다. Android SDK의 일부이지만 adb 실행 파일을 개별적으로 찾을 수도 있습니다.
- Android 기기를 연결합니다.
- 개발자 옵션을 활성화합니다 .
- USB 디버깅을 활성화합니다.
- 명령 프롬프트 (Windows) 또는 터미널 (Linux / Mac)을 엽니 다. 방법 : Windows : windows + r> “cmd”입력 (따옴표 제외)> Enter 클릭 | Linux : 터미널을 여는 방법을 모르십니까? LOL | Mac : Spotlight에
Terminal
를 입력하고여십시오. - CD에서 adb 실행 파일이 있습니다. Windows : adb 실행 파일을 다운로드 한 디렉토리로 이동합니다. Shift + 오른쪽 클릭하고 “콘솔 열기”(또는 유사)를 선택합니다. | Linux / Mac : 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 “여기에서 터미널 열기”를 선택합니다. (또는 단순히 디렉토리에 CD를 넣으십시오)
- cmd / 터미널에
adb devices
를 입력하여 장치가 제대로 연결되었는지 확인하십시오. - 경우 기기가 올바르게 선택되면
adb logcat
를 입력하여 강력하고 마법 같은 logcat 일명 stacktrace를 표시하세요. - 기기에서 오류 (또는 기타)를 재현하세요.
- 바로 전체 cmd / 터미널 창을 http://pastebin.com/ 와 같은 붙여 넣기 서비스에 붙여 넣습니다. 저희에게 보내주십시오.
li>
(대부분 Leandros 에서 복사)
An swer
/sdcard/bugreports
에 있습니다.
댓글
- ' 내 휴대 전화에 이러한 폴더가 없었습니다 … 제조업체 또는 기기에만 해당됩니까?
-
Logcat-CyanogenMod Wiki : 매직 키 조합을 사용하여 / sdcard / bugreports에 버그 신고 파일을 만들 수 있습니다. 그래서 이것은 ) 약간 구체적 (아마 CM에 해당), b) OP가 " 자동으로 생성 된 " 일.