Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
More Android Studio Debugger
Search
Yoshihiro WADA
October 31, 2018
Programming
8
340
More Android Studio Debugger
2018/10/31に開催された Shibuya.apk #29 にて発表した「More Android Studio Debugger」のスライドです。
Yoshihiro WADA
October 31, 2018
Tweet
Share
More Decks by Yoshihiro WADA
See All by Yoshihiro WADA
Gradleの実行環境設定を見直す
e10dokup
0
780
Firebase App Distributionのテストアプリ配信を試しやすくする
e10dokup
0
530
アプリに署名する 〜GitHub ActionsでのCIも見据えて〜
e10dokup
0
1.1k
Profileable buildでより正確なパフォーマンスを掴む
e10dokup
0
690
[DroidKaigi 2021] メディアアクセス古今東西 / Now and Future of Media Access
e10dokup
0
3.3k
今更「dp」を考える / Let's think about "dp" now
e10dokup
0
5.4k
1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけよう / Learn Android application debugging from the scratch - track apps' behaviors
e10dokup
10
3.1k
Guide to background processingを読んでみる / Reading "Guide to background processing"
e10dokup
0
250
よしなに頑張る画像ロードの話 / image load mettya tsurai
e10dokup
2
470
Other Decks in Programming
See All in Programming
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
490
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
110
17年周年のWebアプリケーションにTanStack Queryを導入する / Implementing TanStack Query in a 17th Anniversary Web Application
saitolume
0
250
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
270
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
150
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
340
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
500
Keeping it Ruby: Why Your Product Needs a Ruby SDK - RubyWorld 2024
envek
0
190
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
160
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
130
良いユニットテストを書こう
mototakatsu
8
2.7k
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
140
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Speed Design
sergeychernyshev
25
670
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
The Invisible Side of Design
smashingmag
298
50k
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Transcript
More Android Studio Debugger 〜あんなことできたんかお前〜 Cyber Agent Inc. Yoshihiro Wada
a.k.a. @e10dokup 2018/10/31 Shibuya.apk at Yahoo! LODGE
自己紹介 • Yoshihiro Wada a.k.a. @e10dokup • 大体左のアイコンで息をしています • CyberAgant
Inc. / Ameba • つい最近Ameba Blogを作ることになりました • カメラ沼 • 財布の透過率が高いのが最近の悩み
Android Studioのデバッガー、 ちゃんと扱えていますか
知っているとちょっと楽になるかもしれない デバッガーの使い方を見ていきましょう
「んなもん知ってるわい」 って方ごめんなさい。
まずはじめに
デバッガーの起動 • Debug ‘<module>’ でデバッグ用にアプリを実行する • Ctrl + D •
Attach Debugger to Android Processで起動中のアプリに デバッガーをアタッチする • デバッグ用に実行していなくても通常のRunでアタッチできる
いわゆるみんな知ってるBreakpoint • 普通のBreakpoint • コードの左をクリックして設定するやつ。Cmd + F8でも設定できる • デバッガーがアタッチされているアプリがBreakpointまで たどり着いたらそこでアプリが一時停止する
自分で設定したBreakpointの確認 • デバッガーからBreakpointsを呼び出すことで 自分の設定したBreakpointを一覧で確認できる • ここから一括ですべて消すことも可能 • Shift + Cmd
+ F8でも開けます • 一旦ブレークさせたくないときはミュートもできます
ブレークしたら • スタックトレースを確認したり、変数の状態を見たり変更したりできる
ステップオーバー・ステップイン・ステップアウト • 左から… • ステップオーバー:次の行に進む • ステップイン:指定しているメソッド・関数に入る • 強制ステップイン:ステップインで無視されているメソッド・関数に無理やり入る •
Android StudioのBuild, Execution, Deployment > Debugger > Stepping から無視するパッケージを設定できる。デフォルトはJDK由来のものとか • ステップオーバー:ステップインしたメソッド・関数から出る
式評価 • ブレーク時点で様々な式を実行して評価させることが できる • 実行時点のthisとかを呼ぶとブレークした瞬間の メソッド・関数を実行しているオブジェクトが 返ってくるので適当なメソッドでどうなるか試せる • 「このタイミングであの判定って成り立つんだっけ?」
みたいな確認ができて便利
流石にこの辺はみんな使ってそうですね
何もわからないが 「この画面で例外吐いてクラッシュした」 みたいな情報があるとき
Exception Breakpoint • 任意、ないしは指定のExceptionが発生した瞬間にブレークできる • 任意のExceptionでブレークするとき • Breakpoints画面から「Java Exception Breakpoints
> Any exception」を有効にする • 指定のExceptionでブレークするとき • Breakpoints画面から + ボタンで「Java Exception Breakpoints」を選んでException クラスを選択する
「とある条件下で意図しない挙動をしている」 とき
Condition Breakpoint • 設定した式の演算結果がtrueだったときにブレークする • 異常に長い文字列を入れたら挙動が変になった、とかリストに表示する要素数が大きくなった ら挙動が変になった、みたいなケースで有効
「起動後の画面でだけ変、 一回遷移すると大丈夫」 みたいなとき
Temporary Line Breakpoint • 最初にBreakpointに達したときのみブレークする • 一度通過したらそのBreakpointは無効になる • Remove once
hitを有効にすることで設定できる • Cmd + Opt + Shift + F8でも設定できる
「3回しか呼ばれないはずの処理が 不正に4回呼ばれている」 みたいなとき
PassCount Breakpoint • Breakpointに指定した回数到達したらブレークする • Pass Countが4なら4,8,12,…回目にブレークし、それ以外はブレークしない • APIの処理タイミングなどの都合で不正に仕様以上の回数実行される等のデバッグに便利
Breakpointでなにか処理を入れたいとき
Evaluation/Logging Breakpoint • Breakpointの実行直前に指定した処理を実行する • 文字列を入力するとデバッガー上にログが出力される • ブレークしているオブジェクトに適当な処理を実行させられる
Non-Suspend Breakpoint • 到達しても停止しないBreakpoint • Suspendを無効にすると到達時に停止しなくなる • 単体だと意味がない • Evaluation/Logging
Breakpointと組み合わせると自動で ログを出したり強制的に値を設定したりできる • 入力テキストや入力値を固定したり • 強制的にAPIの値を書き換えたり
最後に • 知っていると便利かもしれないデバッガの機能でした • Android ProfilerもAndroid Studio 3.2でまともになったのでAndroid Studioだけでも全然 デバッグに苦労しなくなってきた
• 以前はEditTextにフォーカスを当てた後に画面遷移するとAndroid Profilerのキー入力の ロガーが原因で無条件でクラッシュする不具合が… • Evaluate + Non-suspend Breakpointを思い出せるようにしておくとデバッグ時の入力がそ れなりに楽になるので個人的にはおすすめです