Computer >> 컴퓨터 >  >> 시스템 >> Android

안드로이드에서 Logcat으로 시스템 로그를 추출해 버그를 보고하는 방법

안드로이드는 사용자에게 복잡한 내부 동작을 잘 숨겨주는 운영체제입니다. 문제가 발생해도 맥에서처럼 알아볼 수 없는 텍스트가 가득 찬 화면이 나타나지 않고, 그냥 조용히 오류가 발생하죠.

일반 사용자에게는 편리하지만, 앱이 왜 작동하지 않는지 원인을 파악하고 싶은 개발자나 좀 더 적극적으로 기기를 다루고 싶은 파워 유저에게는 오히려 불편할 수 있습니다.

바로 이럴 때 Logcat이 큰 도움이 됩니다. Logcat을 사용하면 스마트폰이나 태블릿의 시스템 로그 전체를 덤프(dump) 받아 문제를 디버깅할 수 있습니다. 대부분의 사용자에게는 필요 없지만, 개발자들은 문제가 발생했을 때 사용자에게 기기 로그 파일을 요청하는 경우가 종종 있습니다. 이번 글에서는 Logcat을 설치하고 사용하는 방법을 자세히 알아보겠습니다.

Logcat 설치하기

시스템 로그를 생성하기 전에 먼저 몇 가지 사전 준비가 필요합니다. 첫 번째는 ADB(Android Debug Bridge)를 설치하는 것입니다. ADB 안에 Logcat 도구가 포함되어 있습니다.

맥 사용자라면 Homebrew 패키지 관리자를 이용하는 것이 가장 간단합니다. Homebrew가 설치되어 있다면 터미널에서 다음 명령어만 입력하면 됩니다.

brew install android-platform-tools

리눅스 사용자라면 배포판마다 설치 방법이 상당히 다릅니다. 우분투(Ubuntu) 기준으로는 아래 명령어 하나면 충분합니다.

sudo apt-get install android-tools-adb

윈도우 사용자라면 두 가지 선택지가 있습니다. 첫째, XDA Developers에서 제공하는 원클릭 ADB 설치 프로그램을 사용하는 것입니다. 여기에는 필요한 드라이버와 Fastboot까지 포함되어 있어 편리합니다. 둘째, Chocolatey 패키지 관리자를 통해 설치하는 방법이 있는데, 다만 제공되는 버전이 최신이 아닐 수 있다는 점을 감안해야 합니다.

기기를 개발자 모드로 전환하기

다음으로 기기에서 개발자 모드를 활성화해야 합니다. 설정 앱을 열고 '휴대전화 정보' 또는 '태블릿 정보' 메뉴로 이동하세요. 그런 다음 화면 맨 아래로 스크롤하여 '빌드 번호'를 일곱 번 연속으로 탭합니다. 그러면 개발자 모드가 활성화되었다는 메시지가 표시됩니다.

뒤로 가기 버튼을 눌러 설정 최상위 화면으로 돌아가면 '개발자 옵션'이라는 새 메뉴가 나타난 것을 확인할 수 있습니다. 해당 메뉴를 탭하세요.

이제 'USB 디버깅'을 켜고 안드로이드 기기를 컴퓨터에 연결합니다. 모든 과정이 정상적으로 진행되었다면 기기 화면에 USB 디버깅 허용에 대한 경고 팝업이 나타날 것입니다. 내용을 확인하고 허용하면 준비가 끝납니다.

로그 확인하기

이제 로그를 살펴볼 차례입니다. 새 터미널 또는 명령 프롬프트를 열고 다음 명령어를 실행하세요.

adb logcat

정상적으로 작동한다면 시스템 메시지가 터미널 창을 따라 계속 흘러내리는 것을 볼 수 있습니다. 만약 아무것도 표시되지 않는다면 무언가 문제가 있는 것입니다. 기기가 컴퓨터에 제대로 연결되지 않았거나, ADB가 올바르게 설치되지 않았거나, 기기에서 USB 디버깅이 켜져 있지 않은 경우일 가능성이 높습니다.

그렇다면 스마트폰이나 태블릿의 시스템 메시지를 나중에 분석할 수 있도록 텍스트 파일로 저장하려면 어떻게 해야 할까요? 출력 결과를 리디렉션하는 문법은 윈도우든 맥이든 동일합니다. 다음과 같이 입력하면 됩니다.

adb logcat > textfile.txt

또는 adb logcat -f filename 형식으로 실행해도 같은 결과를 얻을 수 있습니다.

로그 파일을 확보했다면 Sed, Awk, Grep 같은 도구로 원하는 부분만 추출·분석하거나, 요청한 개발자에게 그대로 보내주면 됩니다.

한 가지 주의할 점이 있습니다. Logcat은 중단 명령을 내리기 전까지 계속 실행됩니다. 출력을 텍스트 파일로 저장해두고 연결을 종료하는 것을 잊으면, 어느새 하드 드라이브 용량이 고갈될 수도 있습니다. 종료하려면 CTRL-C를 누르면 됩니다.

DevOps나 시스템 관리 업무를 해본 사람이라면 누구나 말하겠지만, 로그 파일은 금방 수십 기가바이트 이상으로 불어날 수 있습니다. 미리 경고해 드립니다.

출력 필터링에 대한 참고 사항

Logcat은 특정 유형의 출력에 우선순위를 두도록 설정할 수도 있습니다. 'V' 플래그(adb logcat V)와 함께 실행하면 모든 메시지를 전부 확인할 수 있습니다. 이른바 '상세(verbose) 모드'가 활성화되기 때문입니다.

하지만 더 구체적인 오류 메시지만 걸러서 보고 싶다면 다른 옵션들도 활용할 수 있습니다. 'I' 옵션은 정보(info) 메시지만, 'D' 옵션은 디버그(debug) 메시지만 표시합니다. 자세한 내용은 공식 Android Debug Bridge 문서를 참고하세요.

다만 특별한 지시가 없는 한, Logcat은 기본 설정으로 실행하는 것이 좋습니다. 로그 파일을 요청한 사람이 앱 문제를 해결하는 데 필요한 모든 정보를 빠짐없이 받을 수 있도록 하기 위함입니다.

루팅된 기기를 위한 대안이 있을까?

네, 실제로 있습니다! 루팅된 스마트폰이나 태블릿을 사용 중이라면 구글 플레이 스토어에서 'aLogCat'을 설치할 수 있습니다. 무료 버전과 유료 버전이 있는데, 기능은 동일하며 유료 버전은 개발자를 후원하는 의미가 있습니다.

aLogCat의 장점은 기기에서 직접 실행되며, 오류 로그를 다루기 쉽게 해주는 다양한 기능을 제공한다는 점입니다.

메시지가 색상으로 강조 표시되기 때문에 어떤 메시지가 오류이고 어떤 것이 무해한 시스템 알림인지 한눈에 구분할 수 있습니다. 또한 이메일, 블루투스, PasteDroid를 통한 PasteBin 등으로 로그를 손쉽게 공유할 수도 있습니다.

로그를 SD 카드에 지속적으로 저장하고 싶다면 'aLogRec'이라는 별도의 앱을 다운로드해야 합니다. 이 역시 무료 버전과 후원 버전이 있으며 구글 플레이 스토어에서 받을 수 있습니다.

그렇다면 로그 파일을 폰에서 직접 열람하고 편집하고 싶다면 어떻게 할까요? 이럴 때는 Vim 텍스트 에디터의 무료 모바일 버전인 'Vim Touch'를 추천합니다. 예전에 안드로이드 기기에서 PHP 개발 환경을 구축하는 방법을 다룰 때 소개한 적이 있는 앱입니다.

마무리하기 전에 꼭 짚고 넘어갈 점이 있습니다. 폰을 루팅하면 멀웨어에 노출될 위험이 커지고, 일부 애플리케이션(특히 뱅킹 앱)이 작동하지 않을 수 있습니다.

로그 파일을 얻기 위해 굳이 기기를 루팅하려고 한다면, 강력하게 ADB 기반의 유선 연결 방식을 사용할 것을 권장합니다. 난이도는 비슷한데 보안성은 훨씬 뛰어나기 때문입니다.

여러분은 어떠신가요?

스마트폰이나 태블릿의 시스템 로그를 직접 추출해본 적이 있으신가요? 어떤 이유였는지, 과정이 쉬웠는지, 어떤 방법을 사용하셨는지 댓글로 알려주세요.