안드로이드 스튜디오 Service(서비스) 객체 디버깅 하는 방법

 

환경: Android Studio

 

기본적으로 서비스는 Breakpoint 를 잡아서 디버깅을 할 수 없습니다. 예전 이클립스에서는 android.os.Debug.waitForDebugger(); 를 소스에 끼워 넣어서 지나치지 못하게 한 다음 디버깅을 했었습니다. 안드로이드 스튜디오에서는 프로그램이 아예 멈춰 버리기 때문에 waitForDebugger() 을 실행하면 안됩니다. 그럼 어떻게 Service를 디버깅 해야 할까요? 그런데 디버깅을 어떻게 해야 되는지를 묻기 전에 왜 안되는지 궁금하지 않으세요? Service 는 앱 실행과 별개로 돌아가는 Process 이기 때문입니다. 안드로이드 스튜디오에서는 에뮬레이터나 안드로이드 디바이스에서 돌아가고 있는 프로세스를 접촉할 수 있도록 “Attach debugger to Android process” 를 제공하고 있습니다. 목록에서 지정한 프로세스는 디버깅이 가능하게 됩니다.

 

Service 클래스를 상속받아서 만든 소스에 Breakpoint 를 찍었는데 디버깅이 가능하지 않은 것으로 표시가 되네요. 디버깅 가능 표시는 빨간색 원에 체크 표시가 되어 있습니다.

안드로이드 스튜디오 Service(서비스) 객체 디버깅 하는 방법

 

Attach debugger to Android process” 는 전화기에 디버그 표시가 붙은 아이콘입니다. 클릭하면 프로세스를 선택할 수 있는 Choose Process 팝업창이 뜹니다. 에뮬레이터에 떠 있는 두 개의 프로세스 중에서 아래에 있는 sipStack Service 프로세스 입니다

안드로이드 스튜디오 Service(서비스) 객체 디버깅 하는 방법

 

Service 프로세스를 선택하면 브레이크 포인트는 디버깅 가능 모드로 바뀌게 됩니다. 그리고 Step 을 진행하게 되면 지정한 브레이크 포인트에 멈추게 됩니다

안드로이드 스튜디오 Service(서비스) 객체 디버깅 하는 방법

Posted by 녹두장군

댓글을 달아 주세요