Android Studio でマスターする必要があるデバッグ スキル (パート 1)

Android Studio でマスターする必要があるデバッグ スキル (パート 1)

すべてのプログラマーにとって、コードを書くときに最も面倒なことは、実装が難しい関数ではなく、苦労した後にプログラムに何らかのバグがあることが判明することです。特に、頭を悩ませ、何度修正しても解決できないバグに遭遇した場合はそうです。そんな経験を持つ友人も多いと思います。開発者にとって、いくつかの小さなバグは大きな問題とは思えないかもしれませんが、それらが時間内に解決されない場合、それらが蓄積すると、少なくともユーザー エクスペリエンスに影響を及ぼし、システム全体のクラッシュを引き起こす可能性があります。
そこで今回は Android Studio を例に、Android 開発で使えそうなデバッグスキルを簡単にまとめてみることにしました。

最も基本的なデバッグスキル

それらの単純で基本的なことが重要でないとは決して思わないでください。これらのテクニックは私たちが最も頻繁に使用するものであることが判明したので、これらのテクニックから始めましょう。

1. ブレークポイントを設定する

ブレークポイントを設定する(図 1)
ブレークポイントを設定するコード行を選択し、行番号の領域の後ろでマウスの左ボタンをクリックします。

2.デバッグモードでAPPを起動します(Shift+F9)

赤い矢印で示されたワーム アイコンをクリックして、アプリをデバッグ モードで起動します。
デバッグモードでAPPを起動します(図2.1)

APP が開始されると、最初のブレークポイントで停止し、IDE の下に [デバッグ] ビューが表示されます。赤い矢印は、デバッガーが現在スタックしているコード行を指します。メソッド Add() の 20 行目プログラム。赤い矢印が乗っている領域は、プログラムのメソッド呼び出しスタック領域です。この領域には、ブレークポイントまでのプログラム実行で使用されたメソッドが表示され、下位のメソッドほど先に呼び出されます。
同時に、ブレークポイントが設定されているコード行の変数 i が監視中であり、この時点では i = 0 であることもわかります。

デバッグビュー(図2.2)

3. シングルステップデバッグ

3.1ステップオーバー(F8)

赤い矢印で示されたステップ オーバー ボタンをクリックします (図では i = 1 にするために 2 回押していますが、これがより明白です)。プログラムは 1 行下で実行されます (現在の行にメソッド呼び出しがある場合、このメソッドはが実行されて返され、次の行に進みます。つまり、呼び出される他のメソッドには入りません)。
踏み越える(図3.1)

3.2 ステップイン(F7)

赤い矢印で示されたステップインボタンをクリックすると、プログラムが 1 行下で実行されます。ステップ オーバーとの違いは、行にメソッド呼び出しがあり、それがカスタム メソッドである場合、その行はカスタム メソッド (公式のクラス ライブラリには入らないメソッド) に実行されることです。
踏み込む(図3.2.1)

クリックした後、Add() メソッドを入力します。

踏み込む(図3.2.2)

[ステップイン] ボタンの右側にある [強制ステップイン] ボタン (Alt+Shift+F7) を使用すると、公式クラス ライブラリを含む任意のメソッドに入ることができます。

3.3ステップアウト(Shift+F8)

デバッグ中にメソッド (Add() など) を入力し、そのメソッドに問題がないと思われる場合は、ステップアウトを使用してメソッドから抜け出し、メソッドが呼び出されたステートメントの次の行に戻ることができます。このメソッドはすでに実行されていることに注意してください。
踏みでる(図3.3.1)

問題ありません。ステップアウト ボタンをクリックしてメソッドから抜け出すと、メソッドが実行されます。
踏みでる(図3.3.2)

このドロップフレームはまだ使い方が決まっていないので、後ほど追加する予定です。

3.4 カーソルまで実行(Alt+F9)

カーソルまで実行(図 3.4.1)
複数のブレークポイントを設定する場合、「カーソルまで実行」ボタンを使用して 2 つのブレークポイント間をジャンプできます。
カーソルまで実行(図 3.4.2)
実はこの機能は Resume Program にもありますが、両者の違いは明確ではありません。

3.5 時計

特定のクラスまたはメソッドに変数が多すぎる場合、[変数] パネルで観察することが非常に困難になるため、ウォッチ ツールを使用する必要があります。
[Watches] の下の + 記号をクリックし、変数の名前を手動で入力して Enter キーを押します。
時計(図3.5.1)

また、「変数」で変数名を選択し、右クリックして「ウォッチに追加」を選択すると、「ウォッチ」パネルに変数が表示されます。
時計(図 3.5.2)
SetValue オプションも表示されます。これは変数の値を手動で変更でき、場合によっては便利です。

3.6 ブレークポイントの表示(Ctrl+Shift+F8)

ブレークポイントの表示(図3.6.1)

矢印の先のボタンをクリックすると、下図のようなウィンドウが表示されます。

ブレークポイントの表示(図3.6.2)

ここでは、設定されているすべてのブレークポイント (矢印で示されている) を表示できます。さらに、条件付きブレークポイント、ログ ブレークポイント、例外ブレークポイントなどもここで設定できます。これらの高度なスキルについては、このシリーズの次回の記事で紹介しますので、お楽しみに!

等!急いでページをめくらないでください。この号で最後に技術的なポイントを 1 つお伝えします。
次のシナリオを想像してください。APK がすでに通常モード (非デバッグ) で実行されている場合、突然デバッグしたいが、再実行に時間を無駄にしたくない場合は、どうすればよいでしょうか。
通常モードでデバッグするためにブレークポイントを設定することはできますか?
もちろん、それだけではなく、この方法が元のソリューションを徐々に置き換えていく可能性もあります。結局のところ、非常に便利ですよね。では、どうすればよいのでしょうか?

4 取り付け工程

アタッチプロセス(図4.1)

通常実行中の APK
アタッチプロセス(図 4.2)

実行後、ブレークポイントを設定します
アタッチプロセス(図 4.3)

「実行」->「Android プロセスにデバッガーをアタッチ」を実行します
アタッチプロセス(図 4.4)

指定されたプロセスにプロセスをアタッチし、条件がトリガーされた直後にデバッグ モードに入ります。次に何をするかを言う必要はありませんね。

参考記事:
http://www.2cto.com/kf/201506/408358.html
http://www.cnblogs.com/firstcsharp/p/4333264.html

おすすめ

転載: blog.csdn.net/Yaoobs/article/details/51296198