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
370
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
900
Gradleの実行環境設定を見直す
e10dokup
0
1.2k
Firebase App Distributionのテストアプリ配信を試しやすくする
e10dokup
0
690
アプリに署名する 〜GitHub ActionsでのCIも見据えて〜
e10dokup
0
1.3k
Profileable buildでより正確なパフォーマンスを掴む
e10dokup
0
760
[DroidKaigi 2021] メディアアクセス古今東西 / Now and Future of Media Access
e10dokup
0
3.9k
今更「dp」を考える / Let's think about "dp" now
e10dokup
0
5.8k
1から学ぶAndroidアプリデバッグ - アプリの動作を追いかけよう / Learn Android application debugging from the scratch - track apps' behaviors
e10dokup
10
3.6k
Guide to background processingを読んでみる / Reading "Guide to background processing"
e10dokup
0
290
Other Decks in Programming
See All in Programming
Apache Iceberg V3 and migration to V3
tomtanaka
0
140
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
980
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
2026年 エンジニアリング自己学習法
yumechi
0
130
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
Oxlintはいいぞ
yug1224
5
1.3k
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
190
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
Package Management Learnings from Homebrew
mikemcquaid
0
180
AI時代の認知負荷との向き合い方
optfit
0
130
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.9k
Featured
See All Featured
Visualization
eitanlees
150
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Making Projects Easy
brettharned
120
6.6k
KATA
mclloyd
PRO
34
15k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Claude Code のすすめ
schroneko
67
210k
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を思い出せるようにしておくとデバッグ時の入力がそ れなりに楽になるので個人的にはおすすめです