가이드: 즐겨 사용하는 앱 디버깅을 돕기 위해 Logcat 보내기

좋아하는 앱이 갑자기 작동 중단된 적이 있나요? 개발자가 발생한 문제를 디버깅하는 데 도움을 주고 싶으십니까? 가이드를 통해 Logcat을 캡처하고 필터링하는 방법을 알아보세요.

크로아티아인들이 2013년 6월 30일 자그레브 반 옐레식 광장에서 크로아티아의 유럽 연합 가입을 축하하면서 EU 깃발을 흔들고 있다. 수만 명의 크로아티아인들은 구 유고슬라비아 공화국의 유혈 독립 전쟁이 끝난 지 거의 20년이 지난 일요일 자정(2200 GMT)에 크로아티아의 유럽 연합 가입을 응원했습니다. AFP 사진 / 스트링거

그것은 어느 시점에서나 우리 모두에게 일어났습니다. 그것을 인정하는 것은 부끄러운 일이 아닙니다. 때때로 Android 앱이 충돌합니다. Google 지도를 실행하기 위해 완전 재고 기기를 사용하든, Xposed 모듈이 포함된 고도로 맞춤화된 ROM을 사용하든 Google 행아웃 향상, 애플리케이션 충돌 및 기타 문제가 발생할 수 있으며 심지어 상당한 방해가 될 수도 있습니다. 이는 당사 웹사이트에서 볼 수 있는 것과 같은 소규모 조정 및 응용 프로그램을 개발할 때 특히 그렇습니다. 문제가 발생할 때 사용자가 개발자에게 충돌의 성격에 대해 빌려줄 수 있는 가장 건설적이고 유용한 통찰력 중 하나는 로그캣. 개발자에게는 매우 유용하지만 일반 사용자에게는 이 정보를 얻는 것이 다소 어려워 보일 수 있습니다.

일반적으로 관련 ADB를 통한 명령줄 도구, 명령줄에 대한 경험이 거의 또는 전혀 없는 많은 사용자는 Logcat을 사용할 수 없습니다. 그러나 특정 앱이 출시되면서 Logcat을 검색하고 보내는 데 ADB 명령이 관여하는 일이 제거되거나 최소한 크게 줄어들어 몇 번의 화면 탭만으로 쉽게 수행할 수 있습니다. 개발자의 개발을 지원하려는 우리의 끝없는 사명에서 사용자에게 Logcat을 보내는 방법을 가르치는 초보자 가이드가 있습니다.


Logcat은 무엇이며 어떻게 가져오나요?

Logcat은 모든 시스템 이벤트의 로그를 가져오는 데 사용되는 ADB 쉘 도구입니다. 여기에는 오류, 경고, 스택 추적 및 일반 시스템 발생이 포함됩니다. 오류가 발생하면 오류 원인을 가리키는 주요 정보가 이 로그를 통해 출력되므로 문제 해결에 매우 유용한 도구입니다. 일반적으로 이는 ADB 명령을 통해 가져와 필터링됩니다. 그러나 다음과 같은 앱은

aLogcat, 카탈로그, 그리고 이 기사에서 선택한 도구는 매트로그, 이러한 명령 도구를 Play 스토어에서 다운로드 가능한 앱의 GUI로 컴파일하여 사용자의 노력을 절약했습니다.

앞서 언급했듯이 Matlog는 Logcat을 수집하는 데 사용하는 것입니다. 단순하면서도 사용자 친화적인 인터페이스로 선택된 Matlog는 XDA Junior Member가 만들었습니다. 플러스큐브 그리고 기반으로 놀란 로슨의 오픈 소스 앱 Catlog. Catlog처럼, Matlog는 다음과 같습니다. 소스에서 컴파일, 또는 Google Play 스토어에서 무료로 다운로드. 루팅하면 설정 중 한 단계를 건너뛸 수 있지만, Logcat을 수집하는 데 루트 액세스가 필요하지 않습니다. 장치가 루팅되지 않은 경우 단일 ADB 셸 명령으로 응용 프로그램에 장치 로그를 읽을 수 있는 액세스 권한을 부여합니다. 아직 컴퓨터에 ADB를 설정하지 않았나요? 문제 없습니다. 다음 단계에 따라 설치하고 실행하세요.

참고: Huawei 휴대폰에서는 Logcat 출력이 완전히 비활성화되었습니다. 숨겨진 설정을 변경해야 합니다. 이 가이드의 나머지 부분을 계속 진행하기 전에


ADB 설정

첫 번째, Google에서 직접 ADB 바이너리를 다운로드하세요. 특정 OS에 대해 컴퓨터의 별도 디렉토리에 추출합니다. 다음, 적절한 드라이버를 설치하세요 당신의 특정 전화를 위해. 그런 다음 설정 -> 개발자 옵션에서 "USB 디버깅"을 활성화하세요. 개발자 옵션이 표시되지 않으면 설정 -> 휴대전화 정보로 이동한 다음 빌드 번호를 7번 탭하여 활성화해야 합니다. 마지막으로 ADB 바이너리와 동일한 디렉터리에서 명령 프롬프트를 시작하여 ADB가 작동하는지 확인하고(마우스 오른쪽 버튼 클릭 -> "여기에서 명령 프롬프트 열기") 다음 명령을 실행합니다.

adb devices

기기의 일련번호가 보이면(무단 인증이 아닌 경우), 당신은 성공했습니다. 휴대폰에 컴퓨터 ADB 액세스 권한을 요청하는 팝업이 표시되면 예라고 대답하세요. 두 가지 모두 나타나지 않으면 컴퓨터/휴대폰을 재부팅하고 컴퓨터에 다시 연결해 보세요. 그렇지 않으면 드라이버를 다시 설치해 보십시오.


Matlog 설정

이제 ADB를 시작하고 실행했으므로(희망적으로) Matlog에서 Logcat을 캡처하는 기능을 활성화하기 위해 해야 할 일은 ADB 셸에서 다음 명령을 실행하는 것뿐입니다. 다시 말하지만, 장치가 이미 루팅된 경우 이 명령은 루팅되지 않은 휴대폰에만 필요하므로 실행할 필요가 없습니다.

adbshellpmgrantcom.pluscubed.matlogandroid.permission.READ_LOGS
오작동하는 앱과 함께 Matlog 레코드 위젯

활성화하고 열면 Matlog는 시스템 이벤트를 실시간으로 표시합니다. 일시 중지 버튼을 눌러 이를 중지한 다음 줄임표 메뉴를 누르고 "지우기"를 선택하여 관련 없는 데이터 필드를 제거할 수 있습니다. 로그 크기를 줄이기 위해 오작동하는 앱에 대한 로그를 준비할 때 이 작업을 수행하는 것이 좋습니다. 단계를 단축하여 로그 길이를 더욱 늘리려면 오른쪽에 표시된 것처럼 문제가 있는 충돌 응용 프로그램 옆 홈 화면에 Matlog 위젯을 추가하십시오. 이 경우, APKtool X 우리의 오작동하는 앱입니다.

위젯을 탭하면 로그 이름을 지정하고 기록을 시작할 수 있습니다. 그런 다음 로깅을 시작한 직후에 오작동을 재현하면 Logcat에 문제와 관련된 정보가 채워집니다. 문제가 재현되면 위젯을 다시 탭하기만 하면 로그 기록이 완료됩니다.

그렇게 하면 Matlog가 캡처된 로그를 엽니다. 일반 장치 정보와 함께 로그를 첨부된 텍스트 파일로 이메일로 보내려면 줄임표를 탭하고 "보내기"를 선택하세요. 그게 다야! Logcat이 성공적으로 캡처되어 전송되었습니다. 옥 교수에게.

위의 예에서 Apktool X가 충돌하는 이유는 내 장치가 루팅되지 않았기 때문이라는 것을 알 수 있습니다. 맙소사! 완전했어야 했는데 기사를 읽다 앱을 사용하기 전에

그건 너무 쉬웠어

물론 모든 문제가 그렇게 쉽게 포착되는 것은 아닙니다. 때로는 부팅과 관련된 문제나 장기간 지속되는 문제를 캡처하려면 앱의 다른 기능이 필요할 수 있습니다. 이러한 경우 Matlog를 백그라운드에서 실행하고(일시 중지하거나 지우지 말고) 로그 레벨 및 필터 기능을 활용하여 데이터를 구문 분석하는 것이 좋습니다.

일반적으로 관련 데이터를 수집하는 데 필요한 유일한 방법은 아니지만 일부 상황에서는 더 많은 컨텍스트 – 이러한 각 도구는 더 긴 로그에서 데이터를 정렬하고 지정하는 데 사용할 수 있습니다. 개발자. 당연히 이는 오류의 성격과 개발자의 요청에 따라 달라집니다. 이 중 하나를 사용하려면 Matlog를 실행하고 문제를 재현한 다음 Matlog로 다시 이동하여 점 메뉴를 탭하고 이 두 가지 정렬 방법 중 하나를 선택하세요.

오류만 표시하는 로그 수준 선택

로그 수준

Matlog로 단순화된 또 다른 ADB 명령인 Log Level 기능을 사용하여 특정 유형의 시스템 이벤트 및 메시지를 볼 수 있습니다. 다음은 Android 개발자 웹사이트에서 설명하고 Matlog 라벨링과 일치하도록 색상으로 구분된 다양한 메시지 유형에 대한 간략한 설명입니다.

가장 낮은 우선순위부터 가장 높은 우선순위까지:

  • V: Verbose(일반 시스템 이벤트)
  • : 디버그
  • : 정보
  • : 경고
  • 이자형: 오류
  • 에프: 치명적인
  • S: 무음(아무 것도 인쇄되지 않는 최우선 순위)

로그 수준 기능에는 각 우선순위 수준에서 로그를 필터링할 수 있는 해당 메시지 목록이 있습니다. 로그 수준을 선택하면 해당 우선순위 수준 이상의 이벤트만 표시되므로 쉽게 식별하고 그룹화할 수 있습니다. 때로는 수천 줄에 달할 수도 있는 수많은 텍스트 줄을 수동으로 스크롤해야 하는 대신 오류를 방지하기 위해 그래서.

"Apktool"에 대한 검색 필터 세트

필터

필터를 사용하여 로그 데이터를 정렬할 수도 있습니다. 키워드 검색을 시작하면 사용자는 이 키워드를 명시적으로 참조하는 메시지만 볼 수 있습니다. 유용한 키워드에는 오작동하는 앱의 이름이나 모든 우선순위 수준의 용어 인스턴스를 포함하는 "오류"라는 단어가 포함될 수 있습니다. 하지 않습니다 모든 "로그 수준" 오류를 포함합니다.

개발자의 애플리케이션 디버깅을 도울 때 특정 키워드를 많이 검색/필터링하는 경우(또는 개발자가 검색할 수 있는 고유한 로그 이벤트를 명시적으로 생성한 다음 다시 돌아올 수 있는 필터를 저장할 수도 있습니다. 미래. 이는 개발자와 협력하여 작업하는 경우 자주 발생하는 일이 무엇인지 미리 알고 있는 경우에 유용합니다.

디버깅할 준비가 되셨나요?

그렇지 않을 수도 있지만 지금 Android 앱 디버깅의 전문가가 되어 Logcat을 수집하고 전송하는 방법을 배우면 좋아하는 앱 개발자에게 훌륭한 리소스가 될 수 있습니다. Matlog와 위에 설명된 기능을 사용하면 오작동하는 앱에 대한 관련 정보를 수집, 정렬 및 전송하는 것이 그 어느 때보다 쉬워졌습니다.


Matlog나 다른 Logcat 앱을 사용해 보셨나요? 이 가이드가 도움이 되었나요? 아래 댓글로 알려주세요!