Android Studio 디버거
조금 더 잘 쓰기
안세원
kingori @ gmail . com
발표자
안세원
● 안드로이드 애플리케이션 개발자 @ 카카오모빌리티
● GDG Korea Slack #android 죽돌이
● GDG 판교 점심먹기 모임의 고인물
2
디버거(Debugger)란?
A debugger or debugging tool is a computer program that is used to test and
debug other programs (the "target" program) (from wikipedia)
대상 프로그램을 테스트하고 디버그하는 용도의 컴퓨터 프로그램
3
디버거(Debugger)란? (안드로이드 개발자 버전)
안드로이드 애플리케이션을 실행한 후
앱이 미리 지정한 중단점에 도달했을 때
앱의 실행을 멈추고
앱의 내부를 확인해서
문제를 파악하는 도구
4
디버거를 활용한 개발 흐름
1. 열코딩
2. 앱 실행했는데 문제 발생!
3. 문제의 원인으로 추정되는 코드 근처에 중단점 설정
4. 디버깅 모드로 앱 실행
5. 중단점에 멈추면 열심히 문제 원인을 파악
6. GOTO 1
5
디버거를 활용한 개발 흐름
1. 열코딩
2. 앱 실행했는데 문제 발생!
3. 문제의 원인으로 추정되는 코드 근처에 중단점 설정
4. 디버깅 모드로 앱 실행
5. 중단점에 멈추면 열심히 문제 원인을 파악 ⇐ 효율적으로 수행해보자
6. GOTO 1
6
디버깅 효율적으로 하기
7
디버깅 효율적으로 하기
디버거 사용을 최소화한다!
⇒ 디버거는 실행 후 문제를 파악하는 용도이다보니 시간이 걸릴 수 밖에 없다
1. 짱 잘 짠다. 버그가 뭐죠?
2. 테스트, 분석도구 등을 이용해 좀 더 일찍 문제를 찾아내어 고친다
8
디버깅 효율적으로 하기
디버거를 쓰겠다면
IDE의 기능을 최대한 활용하자!
https://www.jetbrains.com/help/idea/debugging-code.html
IntelliJ 의 디버거 도움말이 이렇게 긴 데, ⇒
당신은 어디까지 알고 쓰는가!
9
기본부터
10
중단점 걸기
줄 번호 옆의 애매한 공간을 클릭
● 좌클릭: 설정 / 해제
● 우클릭: 상세 정보 창 표시
● Opt + 좌클릭: 비활성화
11
중단점 도달 후 진행
● Step Into(F7) : 호출한 함수 내부로 파고들기
○ Smart Step Into(Shift + F7) : 파고들 대상이 여러개일 경우 Step Into 할 대상 고르기
● Step Over(F8) : 다음 줄로 진행
● Step Out(Shift+F8) : 현재 함수 빠져나오기
● Run to Cursor(Opt+F9) : 일일이 Step over 귀찮아. 커서에서 멈춰라!
● Resume(Opt+Cmd+F8) : 실행 상태로 복귀
● Stop Process(Cmd+F2) : 디버깅 종료하고 앱은 실행 상태로 복귀
12
중단점 도달 후 진행
각각 어디로 이동할까?
● Step Into
● Step Over
● Step Out
13
각각 어디로 이동할까?
● Step Into
● Step Over
● Step Out
중단점 도달 후 진행
14
심화학습
15
실행중인 앱에 디버거 붙이기
앗차, 디버거 모드로 실행하지 않았네!
⇒ Attach Debugger to Android process
16
값 평가(evaluation)
● Evaluate(Opt+F8) : 현재 중단된 상태에서 값을 평가
○ 코틀린 사용 시 기본은 Expression 모드
○ 하나의 Expression 으로 안끝나면 Code Fragment 모드로 전환
● 계속 확인해야 할 값은 Watch에 추가
17
값 조작
Variable > Set Value… 로 조작도 가능!
● Kotlin의 val도 조작 가능
18
조건부 중단점
특정 조건을 만족할 경우에만 중단점에 멈추도록 설정
ex) user.id == 100
⇒ resume 연타는 이제 그만!
19
안멈춰 중단점
중단점인데 중단을 안하다니?
● 임시 로깅 용도로 효과적
● 더 이상 Logger.d( “here!!!”) 적어두고 깜빡하고 commit 하지 말자!
20
객체 마킹
리스트 중 특정 인덱스의 인스턴스의 값을 확인하거나 조작하고 싶다면 객체를 마킹함
● Variable > 해당 객체 > Mark Object
● 마킹한 객체는 Evaluate 창에서 바로 접근 가능 : [마킹한이름]_DebugLabel
21
Q & A
https://www.jetbrains.com/help/idea/debugging-code.html
https://github.com/kingori/studio_debugger_example
22
끝
23

Android studio 디버거 조금 더 잘 쓰기

  • 1.
    Android Studio 디버거 조금더 잘 쓰기 안세원 kingori @ gmail . com
  • 2.
    발표자 안세원 ● 안드로이드 애플리케이션개발자 @ 카카오모빌리티 ● GDG Korea Slack #android 죽돌이 ● GDG 판교 점심먹기 모임의 고인물 2
  • 3.
    디버거(Debugger)란? A debugger ordebugging tool is a computer program that is used to test and debug other programs (the "target" program) (from wikipedia) 대상 프로그램을 테스트하고 디버그하는 용도의 컴퓨터 프로그램 3
  • 4.
    디버거(Debugger)란? (안드로이드 개발자버전) 안드로이드 애플리케이션을 실행한 후 앱이 미리 지정한 중단점에 도달했을 때 앱의 실행을 멈추고 앱의 내부를 확인해서 문제를 파악하는 도구 4
  • 5.
    디버거를 활용한 개발흐름 1. 열코딩 2. 앱 실행했는데 문제 발생! 3. 문제의 원인으로 추정되는 코드 근처에 중단점 설정 4. 디버깅 모드로 앱 실행 5. 중단점에 멈추면 열심히 문제 원인을 파악 6. GOTO 1 5
  • 6.
    디버거를 활용한 개발흐름 1. 열코딩 2. 앱 실행했는데 문제 발생! 3. 문제의 원인으로 추정되는 코드 근처에 중단점 설정 4. 디버깅 모드로 앱 실행 5. 중단점에 멈추면 열심히 문제 원인을 파악 ⇐ 효율적으로 수행해보자 6. GOTO 1 6
  • 7.
  • 8.
    디버깅 효율적으로 하기 디버거사용을 최소화한다! ⇒ 디버거는 실행 후 문제를 파악하는 용도이다보니 시간이 걸릴 수 밖에 없다 1. 짱 잘 짠다. 버그가 뭐죠? 2. 테스트, 분석도구 등을 이용해 좀 더 일찍 문제를 찾아내어 고친다 8
  • 9.
    디버깅 효율적으로 하기 디버거를쓰겠다면 IDE의 기능을 최대한 활용하자! https://www.jetbrains.com/help/idea/debugging-code.html IntelliJ 의 디버거 도움말이 이렇게 긴 데, ⇒ 당신은 어디까지 알고 쓰는가! 9
  • 10.
  • 11.
    중단점 걸기 줄 번호옆의 애매한 공간을 클릭 ● 좌클릭: 설정 / 해제 ● 우클릭: 상세 정보 창 표시 ● Opt + 좌클릭: 비활성화 11
  • 12.
    중단점 도달 후진행 ● Step Into(F7) : 호출한 함수 내부로 파고들기 ○ Smart Step Into(Shift + F7) : 파고들 대상이 여러개일 경우 Step Into 할 대상 고르기 ● Step Over(F8) : 다음 줄로 진행 ● Step Out(Shift+F8) : 현재 함수 빠져나오기 ● Run to Cursor(Opt+F9) : 일일이 Step over 귀찮아. 커서에서 멈춰라! ● Resume(Opt+Cmd+F8) : 실행 상태로 복귀 ● Stop Process(Cmd+F2) : 디버깅 종료하고 앱은 실행 상태로 복귀 12
  • 13.
    중단점 도달 후진행 각각 어디로 이동할까? ● Step Into ● Step Over ● Step Out 13
  • 14.
    각각 어디로 이동할까? ●Step Into ● Step Over ● Step Out 중단점 도달 후 진행 14
  • 15.
  • 16.
    실행중인 앱에 디버거붙이기 앗차, 디버거 모드로 실행하지 않았네! ⇒ Attach Debugger to Android process 16
  • 17.
    값 평가(evaluation) ● Evaluate(Opt+F8): 현재 중단된 상태에서 값을 평가 ○ 코틀린 사용 시 기본은 Expression 모드 ○ 하나의 Expression 으로 안끝나면 Code Fragment 모드로 전환 ● 계속 확인해야 할 값은 Watch에 추가 17
  • 18.
    값 조작 Variable >Set Value… 로 조작도 가능! ● Kotlin의 val도 조작 가능 18
  • 19.
    조건부 중단점 특정 조건을만족할 경우에만 중단점에 멈추도록 설정 ex) user.id == 100 ⇒ resume 연타는 이제 그만! 19
  • 20.
    안멈춰 중단점 중단점인데 중단을안하다니? ● 임시 로깅 용도로 효과적 ● 더 이상 Logger.d( “here!!!”) 적어두고 깜빡하고 commit 하지 말자! 20
  • 21.
    객체 마킹 리스트 중특정 인덱스의 인스턴스의 값을 확인하거나 조작하고 싶다면 객체를 마킹함 ● Variable > 해당 객체 > Mark Object ● 마킹한 객체는 Evaluate 창에서 바로 접근 가능 : [마킹한이름]_DebugLabel 21
  • 22.
  • 23.