본문 바로가기
Android 개발/Debug, ADB, CrashLytics, LogCat

Android 디버깅 방법 및 Tip에 대한 정리

by Developer88 2020. 1. 29.
반응형

오늘은 안드로이드 스튜디오를 이용하여,

Android를 디버깅 하는 방법과

이와 관련한 팁들을 정리해 보도록 하겠습니다.

 

1. 기본적인 디버깅 툴 아이콘 사용법

안드로이드에서 디버깅을 하기 위해서는 디버깅 포인트를 잡아주어야 하는데요.

아래 이미지와 같이 코드 창 왼쪽에 빨간 점이 표시된 공간을 클릭하면,

브레이크 포인트가 설정 됩니다.

다시한번 클릭하면 사라지게 되구요.

 

 

디버깅을 시작하기 위해서는 벌레 모양의 아이콘을 눌러주어야 하는데요.

안드로이드 스튜디오 최상단에서,

아래 이미지에서의 우측 끝에 있는 녹색 벌레 아이콘을 찾아서 클릭해주면 됩니다.

 

참고로 안드로이드 스튜디오는

아래 이미지의 우측 끝과 같이 벌레 아이콘과 우상향을 가르키는 방향 아이콘이 그려진 것을 고르면,

앱을 실행하는 중에도 바로 디버깅을 할 수 있는 기능을 제공합니다.

갑자기 문제가 생겼을 때 유용할 수 있겠지요.

 

 

디버깅을 시작하면 아래와 같은 디버그 창을 보게 되는데요.

혹시 디버그 창이 보이지 않는다면,

메뉴에서  View > Tool Windows > Debug를 선택해 주어도 됩니다.

단축키는 Cmd + 5이므로 이것을 사용해도 됩니다.

 

실행해서 아래와 같은 디버그 창이 보이면 되는데요.

보통은 Break Point에 오면 자동으로 창이 보여집니다.

 

디버그 창에서 상단의 툴 아이콘들에 집중해 보도록 하겠습니다.

 

 

가장 중요한 아이콘은 Step Over와 Step Into아이콘인데요.

하나하나 아이콘을 보면서 정리해 보겠습니다.

 

이것은 Resume Program버튼으로,

다음 Break Point까지 앱을 진행하도록 해 줍니다.

(다음 Break Point가 없다면, 이후 코드로 앱이 계속 진행되도록 resume 합니다.)

 

버튼을 클릭할 때 실행되는 코드를 디버깅한다고 가정할 때,

위 아이콘을 클릭해서 다시 앱이 진행되도록 하고,

다시 클릭을 해서 디버깅을 반복해 볼 수 있겠네요.

 

이 아이콘은 Execution Point를 볼 수 있는 버튼인데요.

현재 실행중인 Point의 위치로 이동하는데 도움이 됩니다.

 

이것이 Step Over버튼인데요.

Break된 지점에서 다음라인의 코드로 이동하도록 해 줍니다.

 

실수로 step over해서 원하지 않는 메소드 내부로 들어가게 됬거나 했을 경우,

android10부터 지원해주는 Drop Frame기능을 이용하면,

바로 전단계로 돌아갈 수 있는데요.

돌아가서, 좌측상단의 녹색 resume버튼을 누르면 다시 디버깅을 해 볼수 있게 됩니다.

 

 

 

이것은 Step Into버튼이구요.

다음 실행될 메소드의 안의 첫번째 줄로 들어가서,

디버깅을 도와 줍니다.

Steo Over와의 차이점이라고 하면,

Step Over가 줄단위의 코드들에 대해서 디버깅한다고 하면,

Step Into는 메소드 단위로 이동하도록 도와 줍니다.

보통은 메소드 안으로 들어가서 Step Over를 하다가,

메소드를 디버깅 하기 위해, Step Into를 사용하면 되겠지요.

 

이 아이콘은 Force Step Into인데요.

단어에서 강제성이 느껴지시지요.

이것은 Step Into옵션 설정에서 몇가지들을 스킵하고 넘어가게 했을경우,

그런 설정을 무시하고 모든 메소드 안으로 들어가서

이동해 주도록 합니다.

Preference에 가보면 아래와 같이 Stepping에 관한 옵션이 있는데요.

Do not step into the classes에 대한 옵션이 오른 쪽에 보입니다.

이러한 것들은 set into를 눌러도 skip이 되는데요.

force를 하면 들어가게 되는 것 입니다.

 

 

이것은 Step Into와는 반대되는 아이콘으로서,

현 메소드 밖으로 나가게 됩니다.

원하지 않게, 소스코드안으로 까지 들어와 버릴 경우,

Step Into를 이용해 밖으로 나갈 필요성이 있습니다.

 

마지막에서 두번째에 위치하는

이 아이콘은 무엇일까요?

이것은 Run to Cursor라는 아이콘으로,

커서가 위치하는 곳으로 바로 이동시키는 것 입니다.

 

한줄씩 디버깅할 필요가 없다면,

Step Over를 반복하기보다는,

Run to Cursor를 이용해서 빠르게 이동시키는 방법도 효율적일 것 같습니다.

 

마지막으로 계산기 아이콘이 보이는데요.

바로 Expression을 넣고 테스트 해 볼수 있는 아이콘입니다.

 

아래와 같이 간단하게 테스트가 가능합니다.

 

어떠한 메소드가 정상적으로 동작하는지 테스트 할 때 써보면 좋을 것 같습니다.

 

위에서 정리해 본 아이콘에는 없지만, 안드로이드 스튜디오의 메뉴에서

Run> Smart Step Into 가 있는데요.

진입할 메소드가 여러개인 경우, 그중 하나를 선택할 수 있도록 해 줍니다.

 

 

2. 변수의 값 보고 변경해 보기

안드로이드 스튜디오에서 디버깅을 실행시켜서 Break Point에서 suspend되었다면,

아래와 같이 alt키와 클릭만으로 변수에 할당된 값을 볼 수 있습니다.

>> Alt + 클릭

 

아래 이미지에서는 tabTitle이라는 변수에 alt클릭을 했는데요.

나오는 변수에 우측마우스 버튼을 클릭해서 컨텍스트 메뉴가 나오면,

Set Value를 선택해서 값을 바꿔볼수도 있습니다.

 

개인적으로 많이 사용하는 단축키중 하나이네요.

 

 

3. Suspend없는 BreakPoint

Suspend가 없이 BreakPoint를 지정할 수도 있는데요.

이렇게 하면 코드를 지저분하게 하게 하는 로그코드를 적지 않고서도,

로그캣에서 값을 볼 수 있다는 장점이 있습니다.

 

굳이 특정 로그를 남기지 않고, Breakpoint hit 메세지로 대체할 수도 있어서,

이 기능은 단축키도 있는데요. Shift를 누른채로 코드번호 옆의 빈공간을 클릭하면,

suspend가 해제된 체로 설정할 수 있습니다.

>> Shift + Click

 

 

 

4. Logcat화면 설정 밑 팁

디버깅 툴을 이용하기도 하지만 로그캣을 이용한 로그도 이용하게 되는데요.

로그캣의 좌측에 보면 톱니바퀴모양의 설정 아이콘이 있습니다.

이것을 누르면, packagename을 보이는 여부등,

현재 보여주는 정보들을 선택할 수 있습니다.

 

 

만약 Logcat에서 한번에 두가지 단어를 필터링해서 보고 싶을 때는 아래이미지와 같이

"|"를 원하는 두 단어사이에 넣어주면 됩니다.

이외에도 정규식을 사용하여서 다양한 필터링을 할 수 있는데요.

정규식에 능숙하지 않다면, "|"(파이프)기호만으로도 필터링을 좀 더 효율적으로 사용할 수 있습니다.

 

5. Fold lines like this

Logcat에 나오는 내용 중 보고 싶지 않은 부분을 드래그해서 선택해 준 다음,

우측마우스버튼을 클릭 후 나오는 context menu에서,

fold lines like this를 선택해 줍니다.

 

확인을 눌러주면 해당 string이 포한된 로그는 필터되서 더이상 보지 않아도 됩니다.

이런 식으로 필요하지 않는 정보를 제거하다 보면 원하는 정보들만 필터링해서 보기가 매우 쉽겠네요.

 

 

6. Conditional Break Point

Break Point에도 Conditional을 붙일 수 있는데요.

아래와 같이 할수도 있습니다.

 

 

 

7. Firebase등을 통해서 받은 에러리포트의 코드위치 찾기

받은 리포트의 StackTrace 텍스트를 긁어서 copy한 다음,

안드로이드 스튜디오의 Analyze > Analyze Stack Track로 이동합니다.

 

 

 

복사했던 에러 리포트의 텍스트는 이미 들어와 있구요.

아래와 같은 화면을 볼 수 있습니다.

 

OK를 눌러주면 아래와 같은 화면을 Logcat에서 볼 수 있구요.

바로 해당 위치로 이동할 수 있으므로, 너무나 편한 기능이라고 할 수 있겠네요.

 

 

8. BreakPoint groups

BreakPoint를 만든 후에,

좌측 하단의 More를 클릭하면,

좌측리스트에 만들었던 BreakPoint들을 볼 수 있습니다.

 

 

이들을 shift클릭한 다음, 우측 마우스 버튼을 누르면

아래와 같이 그룹을 선택하거나 만들 수 있는데요.

 

testGroup이라고 이름을 만든 후에 와서보면 아래와 같이 그루핑이 되어있습니다.

이들을 한번에 해제하거나 활성화시키는 것이 가능해 지는 것이지요.

 

 

9. Mark Object

디버깅을 하다가, 특정 status를 모니터링 하기위해서 Mark Object기능을 사용할 수 있는데요.

우측마우스 버튼을 클릭 후에 Mark Object를 클릭해 주면 됩니다.

 

이름을 testLabel로 붙이면 아래와 같이 표현이 됩니다.

이렇게 마킹되면 나중에 watcher탭에서 언제든지 찾아서 상태를 볼 수 있게 됩니다.

 

이상으로 디버깅에 대한 글을 정리해 보았는데요.

이에 관해 좋은 내용들이 있으면, 이 글을 통해서 업데이트 하도록 하겠습니다.

 

728x90

댓글