Android Studio - 디버깅하기 (안드로이드 앱 디버그 하는 방법)

반응형

디버그 시작하기

디버그를 시작하는 방법은 세 가지의 방법으로 요약할 수 있다.

 

1. 메뉴를 이용하여 디버그 시작하기

  • 상단 메뉴에서 Run - Debug 'app' 클릭


2. 디버그 아이콘 클릭하기

우측 상단을 보면 앱 동작 관련 아이콘들이 있다.

녹색 벌레 모양 아이콘을 클릭해준다. (난 이게 벌레 모양이 맞는지도 모르겠다)


3. 단축키 이용하기

단축키 Ctrl + F9 (컨트롤 + F9) 입력


+ 실행중인 앱을 다시 실행하지 않고 디버그로 변경하기

위의 세 가지는 디버그를 시작할 수 있도록 해준다.

하지만 위의 디버그 기능은 디버그를 시작하기 위해 앱을 다시 실행한다.

이런 번거로움을 줄일 수 있는 기능이 있는데, 'Attach Debugger to Android Process' 기능이다.

직역하자면 안드로이드 프로세스에 디버그를 붙인다는 뜻인데,

이 기능을 이용하면 앱을 다시 시작하지 않고도 현재 실행중인 앱에 디버그를 시작할 수 있다.

이 기능은 메뉴와 아이콘을 통해 접근이 가능하다.

[메뉴를 통해 실행중인 앱에 디버그 시작하기]

 

[아이콘를 통해 실행중인 앱에 디버그 시작하기]

 

그럼 다음과 같은 창이 출력된다.

현재 실행중인 프로젝트를 선택하여 OK 버튼을 눌러주면 바로 디버그를 시작할 수 있다.


브레이크 포인트 설정하기 (Create Break Points)

브레이크 포인트(중단점)을 설정하는 방법은 간단하다.

디버그를 할 코드 왼쪽의 라인넘버와 코드 사이에 약간의 여백이 존재한다.

이 부분을 누르면 동그란 빨간색 원이 생기게 되는데, 디버그를 할 때 앱을 해당 지점에서 중단하게 만든다.

개발자는 중단 지점에서 변수의 값과 상태, 프로세스 흐름 등을 천천히 살펴볼 수 있다.

 

간단한 예시는 다음과 같다.

빨간 네모의 여백은 브레이크 포인트를 지정하고 시각적으로 보여주는 공간이다.

여기서 onCreate 첫 줄에 브레이크 포인트를 만들어보자.

해당 코드 왼쪽에 마우스 왼쪽 클릭을하면 빨간색 원이 생기면서 브레이크 포인트가 생성된다.

이를 통해 개발자는 중단점을 만들 수 있다.


디버그 하기

디버그의 원리는 단순하다.

프로세스는 그대로 유저의 요구사항에 맞게 실행되지만,

브레이크 포인트를 만나면 해당 부분에서 실행이 중지된다.

이 지점에서 개발자가 에러가 나는 프로세스를 천천히 확인하거나

의도와 다르게 출력되는 변수의 값을 확인하며 코드를 수정해 나가는 과정(디버깅)을 진행할 수 있다.

 

 

디버깅 조건은 간단하다.

  1. 디버그 상태여야 할 것
  2. 브레이크 포인트가 있어야 할 것

 

포스팅에서는 위의 조건을 모두 갖추었으므로 앱 실행 후,

내가 지정한 브레이크 포인트에 코드가 수행되면 본격적으로 디버그가 실행된다.

위에서 제시한 예시는 앱의 메인 액티비티가 생성되었을 때 중단점을 찍도록 하였다.

실제로 어떤지 봐보자.

 

앱을 실행한 화면이다.

액티비티를 생성할 때 브레이크 포인트를 걸어두었으니

아무것도 빌드되지 않아서 당연히 아무것도 나오지 않는다.

 

코드는 브레이크 포인트 부분으로 이동되었다.

 

안드로이드 스튜디오 하단을 보면 디버그 창이 새로 생겼다.

여기서 프로세스의 흐름과 변수의 값들을 확인할 수 있다.

(좌 : 프로세스 흐름 확인 / 우 : 변수 상태 확인)

 

디버그에서 자주 사용하는 기능이다.

이 버튼을 이용하여 디버그를 순차적으로 진행하면 된다.

  1. Step Over : 코드의 다음 줄로 이동
  2. Step Into : 메서드 호출 내의 첫 줄로 이동
  3. Step Out : 현재 메서드 밖의 다음 줄로 이동
  4. Resume Program : 정상적으로 앱 계속 실행


Error : 브레이크 포인트가 작동 안 할 때

(릴리즈 모드에서 디버그 하기)

앱이 릴리즈 모드로 실행되며, 설정에 의해 디버그 모드가 꺼져있을 수 있다.

이럴 경우 빌드 타입을 변경해주면 된다.

 

프로젝트 디렉토리에서 build.grade (Module) 을 열어주자.

 

나같은 경우에도 릴리즈 모드에서 디버깅을 허용 안함 설정이되어 있어서 브레이크 포인트가 작동을 하지 않았다.

이건 내 프로젝트에서의 디버깅이 걸리지 않았던 요인중 하나이다.

debuggable 의 옵션을 false가 아닌 true로 변경해주고 Sync Now를 눌러 프로젝트의 싱크를 맞춰주자.

  • debuggable : true
buildTypes {
    release {
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
        minifyEnabled true
        debuggable true // false를 true로 변경해주기
    }
}

참고

 

반응형