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
350
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
AndroidデバイスにFTPサーバを建立する
e10dokup
0
330
Gradleの実行環境設定を見直す
e10dokup
0
930
Firebase App Distributionのテストアプリ配信を試しやすくする
e10dokup
0
600
アプリに署名する 〜GitHub ActionsでのCIも見据えて〜
e10dokup
0
1.2k
Profileable buildでより正確なパフォーマンスを掴む
e10dokup
0
730
[DroidKaigi 2021] メディアアクセス古今東西 / Now and Future of Media Access
e10dokup
0
3.6k
今更「dp」を考える / Let's think about "dp" now
e10dokup
0
5.6k
1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけよう / Learn Android application debugging from the scratch - track apps' behaviors
e10dokup
10
3.2k
Guide to background processingを読んでみる / Reading "Guide to background processing"
e10dokup
0
260
Other Decks in Programming
See All in Programming
設計の本質:コード、システム、そして組織へ / The Essence of Design: To Code, Systems, and Organizations
nrslib
10
3.7k
REALITY コマンド作成チュートリアル
nishiuriraku
0
120
AIコーディングの理想と現実
tomohisa
35
37k
Amazon CloudWatchの地味だけど強力な機能紹介!
itotsum
0
230
Ruby's Line Breaks
yui_knk
4
2.8k
Cursor/Devin全社導入の理想と現実
saitoryc
28
21k
KANNA Android の技術的課題と取り組み
watabee
0
180
20250429 - CNTUG Meetup #67 / DevOps Taiwan Meetup #69 - Deep Dive into Tetragon: Building Runtime Security and Observability with eBPF
tico88612
0
160
2ヶ月で生産性2倍、お買い物アプリ「カウシェ」4チーム同時改善の取り組み
ike002jp
1
110
2025-04-25 GitHub Copilot Agent ライブデモ(スクリプト)
goataka
0
100
RubyKaigi Dev Meeting 2025
tenderlove
1
1.3k
Ruby on Railroad: The Power of Visualizing CFG
ydah
0
290
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
523
40k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
4 Signs Your Business is Dying
shpigford
183
22k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
550
Docker and Python
trallard
44
3.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Designing for humans not robots
tammielis
253
25k
GraphQLとの向き合い方2022年版
quramy
46
14k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Navigating Team Friction
lara
185
15k
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を思い出せるようにしておくとデバッグ時の入力がそ れなりに楽になるので個人的にはおすすめです