SlideShare a Scribd company logo
1 of 23
Download to read offline
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

More Related Content

What's hot

ゆるゆるUE4ネットワーク入門
ゆるゆるUE4ネットワーク入門ゆるゆるUE4ネットワーク入門
ゆるゆるUE4ネットワーク入門ssuser221848
 
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリTakayoshi Tanaka
 
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説UnityTechnologiesJapan002
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>エピック・ゲームズ・ジャパン Epic Games Japan
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -historia_Inc
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵NAVER Engineering
 
UnrealBuildTool勉強会まとめ
UnrealBuildTool勉強会まとめUnrealBuildTool勉強会まとめ
UnrealBuildTool勉強会まとめShun Sasaki
 
クリエイティブワークを支えるHelix Core
クリエイティブワークを支えるHelix Coreクリエイティブワークを支えるHelix Core
クリエイティブワークを支えるHelix CoreSatoshi OKAWARA
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.ozlael ozlael
 
エフェクトにしっかり色を付ける方法
エフェクトにしっかり色を付ける方法エフェクトにしっかり色を付ける方法
エフェクトにしっかり色を付ける方法kmasaki
 

What's hot (20)

ゆるゆるUE4ネットワーク入門
ゆるゆるUE4ネットワーク入門ゆるゆるUE4ネットワーク入門
ゆるゆるUE4ネットワーク入門
 
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
 
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
 
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
20150530 めとべや東京 Reactive Property + Livetで作るWPFアプリ
 
UIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろうUIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろう
 
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
【Unite Tokyo 2019】3Dアバターファイルフォーマット「VRM」詳説
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
カリギュラオーバードーズにおけるUE4へのデータ移植の手引き
カリギュラオーバードーズにおけるUE4へのデータ移植の手引きカリギュラオーバードーズにおけるUE4へのデータ移植の手引き
カリギュラオーバードーズにおけるUE4へのデータ移植の手引き
 
なぜなにFProperty - 対応方法と改善点 -
なぜなにFProperty - 対応方法と改善点 -なぜなにFProperty - 対応方法と改善点 -
なぜなにFProperty - 対応方法と改善点 -
 
Riderはいいぞ!
Riderはいいぞ!Riderはいいぞ!
Riderはいいぞ!
 
UE4モバイルブートキャンプ
UE4モバイルブートキャンプUE4モバイルブートキャンプ
UE4モバイルブートキャンプ
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
 
UnrealBuildTool勉強会まとめ
UnrealBuildTool勉強会まとめUnrealBuildTool勉強会まとめ
UnrealBuildTool勉強会まとめ
 
クリエイティブワークを支えるHelix Core
クリエイティブワークを支えるHelix Coreクリエイティブワークを支えるHelix Core
クリエイティブワークを支えるHelix Core
 
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演)  #UE4DDUE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演)  #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
 
WCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化した
WCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化したWCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化した
WCCF最新作、アーケードゲームWCCF FOOTISTA 2019はこうやって進化した
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
 
エフェクトにしっかり色を付ける方法
エフェクトにしっかり色を付ける方法エフェクトにしっかり色を付ける方法
エフェクトにしっかり色を付ける方法
 

Similar to Android studio 디버거 조금 더 잘 쓰기

디버거 소개
디버거 소개디버거 소개
디버거 소개JuHong Jeong
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니Lusain Kim
 
Debugging with Visual Studio
Debugging with Visual StudioDebugging with Visual Studio
Debugging with Visual StudioLusain Kim
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
[강의소개] 안드로이드 앱 개발 입문 캠프 4기
[강의소개] 안드로이드 앱 개발 입문 캠프 4기[강의소개] 안드로이드 앱 개발 입문 캠프 4기
[강의소개] 안드로이드 앱 개발 입문 캠프 4기FAST CAMPUS
 
Flipper 불완전 정복
Flipper 불완전 정복Flipper 불완전 정복
Flipper 불완전 정복Sewon Ann
 
[DS Meetup] iPad로 가벼운 분석환경 구축해보기
[DS Meetup] iPad로 가벼운 분석환경 구축해보기[DS Meetup] iPad로 가벼운 분석환경 구축해보기
[DS Meetup] iPad로 가벼운 분석환경 구축해보기Minho Lee
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습YoungSu Son
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Joonsung Lee
 
P ilot plant_2014
P ilot plant_2014P ilot plant_2014
P ilot plant_2014성관 윤
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편Darion Kim
 
어플리케이션 및 웹 개발
어플리케이션 및 웹 개발어플리케이션 및 웹 개발
어플리케이션 및 웹 개발Leonardo Taehwan Kim
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)DONGSU KIM
 
gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기Manjong Han
 

Similar to Android studio 디버거 조금 더 잘 쓰기 (20)

디버거 소개
디버거 소개디버거 소개
디버거 소개
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니
 
Debugging with Visual Studio
Debugging with Visual StudioDebugging with Visual Studio
Debugging with Visual Studio
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
[강의소개] 안드로이드 앱 개발 입문 캠프 4기
[강의소개] 안드로이드 앱 개발 입문 캠프 4기[강의소개] 안드로이드 앱 개발 입문 캠프 4기
[강의소개] 안드로이드 앱 개발 입문 캠프 4기
 
Flipper 불완전 정복
Flipper 불완전 정복Flipper 불완전 정복
Flipper 불완전 정복
 
[DS Meetup] iPad로 가벼운 분석환경 구축해보기
[DS Meetup] iPad로 가벼운 분석환경 구축해보기[DS Meetup] iPad로 가벼운 분석환경 구축해보기
[DS Meetup] iPad로 가벼운 분석환경 구축해보기
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습
 
Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기Go로 새 프로젝트 시작하기
Go로 새 프로젝트 시작하기
 
P ilot plant_2014
P ilot plant_2014P ilot plant_2014
P ilot plant_2014
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
주니어 개발자도 이해 할 수 있는 Go언어 시작하기 - 설치편
 
어플리케이션 및 웹 개발
어플리케이션 및 웹 개발어플리케이션 및 웹 개발
어플리케이션 및 웹 개발
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
Open Jig Ware
Open Jig WareOpen Jig Ware
Open Jig Ware
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기gradle로 안드로이드 앱 빌드하기
gradle로 안드로이드 앱 빌드하기
 

More from Sewon Ann

지금은 Constraint layout 시대
지금은 Constraint layout 시대지금은 Constraint layout 시대
지금은 Constraint layout 시대Sewon Ann
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들Sewon Ann
 
백엔드 서버 구축없이 모바일 앱앱 만들어보기
백엔드 서버 구축없이 모바일 앱앱 만들어보기백엔드 서버 구축없이 모바일 앱앱 만들어보기
백엔드 서버 구축없이 모바일 앱앱 만들어보기Sewon Ann
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talkSewon Ann
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
Google Hackathon Korea - hangout mafia
Google Hackathon Korea - hangout mafiaGoogle Hackathon Korea - hangout mafia
Google Hackathon Korea - hangout mafiaSewon Ann
 
Spring 3의 jsr 303 지원
Spring 3의 jsr 303 지원Spring 3의 jsr 303 지원
Spring 3의 jsr 303 지원Sewon Ann
 

More from Sewon Ann (8)

지금은 Constraint layout 시대
지금은 Constraint layout 시대지금은 Constraint layout 시대
지금은 Constraint layout 시대
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
 
백엔드 서버 구축없이 모바일 앱앱 만들어보기
백엔드 서버 구축없이 모바일 앱앱 만들어보기백엔드 서버 구축없이 모바일 앱앱 만들어보기
백엔드 서버 구축없이 모바일 앱앱 만들어보기
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
Google Hackathon Korea - hangout mafia
Google Hackathon Korea - hangout mafiaGoogle Hackathon Korea - hangout mafia
Google Hackathon Korea - hangout mafia
 
Spring 3의 jsr 303 지원
Spring 3의 jsr 303 지원Spring 3의 jsr 303 지원
Spring 3의 jsr 303 지원
 

Android studio 디버거 조금 더 잘 쓰기

  • 1. Android Studio 디버거 조금 더 잘 쓰기 안세원 kingori @ gmail . com
  • 2. 발표자 안세원 ● 안드로이드 애플리케이션 개발자 @ 카카오모빌리티 ● GDG Korea Slack #android 죽돌이 ● GDG 판교 점심먹기 모임의 고인물 2
  • 3. 디버거(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
  • 4. 디버거(Debugger)란? (안드로이드 개발자 버전) 안드로이드 애플리케이션을 실행한 후 앱이 미리 지정한 중단점에 도달했을 때 앱의 실행을 멈추고 앱의 내부를 확인해서 문제를 파악하는 도구 4
  • 5. 디버거를 활용한 개발 흐름 1. 열코딩 2. 앱 실행했는데 문제 발생! 3. 문제의 원인으로 추정되는 코드 근처에 중단점 설정 4. 디버깅 모드로 앱 실행 5. 중단점에 멈추면 열심히 문제 원인을 파악 6. GOTO 1 5
  • 6. 디버거를 활용한 개발 흐름 1. 열코딩 2. 앱 실행했는데 문제 발생! 3. 문제의 원인으로 추정되는 코드 근처에 중단점 설정 4. 디버깅 모드로 앱 실행 5. 중단점에 멈추면 열심히 문제 원인을 파악 ⇐ 효율적으로 수행해보자 6. GOTO 1 6
  • 8. 디버깅 효율적으로 하기 디버거 사용을 최소화한다! ⇒ 디버거는 실행 후 문제를 파악하는 용도이다보니 시간이 걸릴 수 밖에 없다 1. 짱 잘 짠다. 버그가 뭐죠? 2. 테스트, 분석도구 등을 이용해 좀 더 일찍 문제를 찾아내어 고친다 8
  • 9. 디버깅 효율적으로 하기 디버거를 쓰겠다면 IDE의 기능을 최대한 활용하자! https://www.jetbrains.com/help/idea/debugging-code.html IntelliJ 의 디버거 도움말이 이렇게 긴 데, ⇒ 당신은 어디까지 알고 쓰는가! 9
  • 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
  • 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