デバッグ実行
左から2つめの虫のアイコンです.
いわずもがな,デバッグ状態でアプリを実行します.
プロセスにアタッチ
実行中のアプリに途中からアタッチすることもできます.
このアイコン群の右端を押すと
とアタッチ可能なプロセス一覧が表示されるので,アタッチしたいプロセスを選択します.
任意の場所で確実にアタッチしたい
デバッグ実行はアプリケーション開始から行われるし,プロセスへのアタッチもタイミングが確実じゃないので,ちょっと使いにくい時.
ユースケース
ユースケースは…あまり無いかもしれないけど,たとえば
- zipの展開処理のような重い処理
- デバッガをアタッチし続けていると重くてzip展開が遅くなる
- 展開処理終了直後の行でブレークさせたい
- 展開処理が95%くらいになったらアタッチ…?
- タイミングミスったらハジメカラ
とか,
- アプリケーション再起動後のonCreateでシングルトンインスタンスを確認したい
- デバッグ実行するとプロセスそのものが再起動されてシングルトンインスタンスがクリアされる
- アタッチするにもonCreate()ではアタッチ操作間に合わない
できれば,ブレークさせたい直前で確実にデバッガをアタッチしたい…
できます
Debug.waitForDebugger()
(Debug.waitingForDebugger()
ではない) をブレークしたい行の上において実行すると,デバッガが接続されるまでこの行で止まってくれます.
デバッガが接続されると処理が進み,ブレークポイントで止まるはずです.
(debuggable true
が必要かもしれません)
ほかにも何か方法があれば教えてください