Android Studio - 디버깅하기 (안드로이드 앱 디버그 하는 방법)
디버그 시작하기
디버그를 시작하는 방법은 세 가지의 방법으로 요약할 수 있다.
1. 메뉴를 이용하여 디버그 시작하기
- 상단 메뉴에서 Run - Debug 'app' 클릭
2. 디버그 아이콘 클릭하기
우측 상단을 보면 앱 동작 관련 아이콘들이 있다.
녹색 벌레 모양 아이콘을 클릭해준다. (난 이게 벌레 모양이 맞는지도 모르겠다)
3. 단축키 이용하기
단축키 Ctrl + F9 (컨트롤 + F9) 입력
+ 실행중인 앱을 다시 실행하지 않고 디버그로 변경하기
위의 세 가지는 디버그를 시작할 수 있도록 해준다.
하지만 위의 디버그 기능은 디버그를 시작하기 위해 앱을 다시 실행한다.
이런 번거로움을 줄일 수 있는 기능이 있는데, 'Attach Debugger to Android Process' 기능이다.
직역하자면 안드로이드 프로세스에 디버그를 붙인다는 뜻인데,
이 기능을 이용하면 앱을 다시 시작하지 않고도 현재 실행중인 앱에 디버그를 시작할 수 있다.
이 기능은 메뉴와 아이콘을 통해 접근이 가능하다.
[메뉴를 통해 실행중인 앱에 디버그 시작하기]
[아이콘를 통해 실행중인 앱에 디버그 시작하기]
그럼 다음과 같은 창이 출력된다.
현재 실행중인 프로젝트를 선택하여 OK 버튼을 눌러주면 바로 디버그를 시작할 수 있다.
브레이크 포인트 설정하기 (Create Break Points)
브레이크 포인트(중단점)을 설정하는 방법은 간단하다.
디버그를 할 코드 왼쪽의 라인넘버와 코드 사이에 약간의 여백이 존재한다.
이 부분을 누르면 동그란 빨간색 원이 생기게 되는데, 디버그를 할 때 앱을 해당 지점에서 중단하게 만든다.
개발자는 중단 지점에서 변수의 값과 상태, 프로세스 흐름 등을 천천히 살펴볼 수 있다.
간단한 예시는 다음과 같다.
빨간 네모의 여백은 브레이크 포인트를 지정하고 시각적으로 보여주는 공간이다.
여기서 onCreate 첫 줄에 브레이크 포인트를 만들어보자.
해당 코드 왼쪽에 마우스 왼쪽 클릭을하면 빨간색 원이 생기면서 브레이크 포인트가 생성된다.
이를 통해 개발자는 중단점을 만들 수 있다.
디버그 하기
디버그의 원리는 단순하다.
프로세스는 그대로 유저의 요구사항에 맞게 실행되지만,
브레이크 포인트를 만나면 해당 부분에서 실행이 중지된다.
이 지점에서 개발자가 에러가 나는 프로세스를 천천히 확인하거나
의도와 다르게 출력되는 변수의 값을 확인하며 코드를 수정해 나가는 과정(디버깅)을 진행할 수 있다.
디버깅 조건은 간단하다.
- 디버그 상태여야 할 것
- 브레이크 포인트가 있어야 할 것
포스팅에서는 위의 조건을 모두 갖추었으므로 앱 실행 후,
내가 지정한 브레이크 포인트에 코드가 수행되면 본격적으로 디버그가 실행된다.
위에서 제시한 예시는 앱의 메인 액티비티가 생성되었을 때 중단점을 찍도록 하였다.
실제로 어떤지 봐보자.
앱을 실행한 화면이다.
액티비티를 생성할 때 브레이크 포인트를 걸어두었으니
아무것도 빌드되지 않아서 당연히 아무것도 나오지 않는다.
코드는 브레이크 포인트 부분으로 이동되었다.
안드로이드 스튜디오 하단을 보면 디버그 창이 새로 생겼다.
여기서 프로세스의 흐름과 변수의 값들을 확인할 수 있다.
(좌 : 프로세스 흐름 확인 / 우 : 변수 상태 확인)
디버그에서 자주 사용하는 기능이다.
이 버튼을 이용하여 디버그를 순차적으로 진행하면 된다.
- Step Over : 코드의 다음 줄로 이동
- Step Into : 메서드 호출 내의 첫 줄로 이동
- Step Out : 현재 메서드 밖의 다음 줄로 이동
- 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로 변경해주기
}
}
참고