デバッグは、コードの実行プロセスを追跡するために使用されます。通常、デバッグ モードを有効にすると、例外の場所と実行プロセス中のパラメータの変更を分析して特定できます。通常、デバッグ モードを有効にして、コードの実行プロセスを追跡し、サードパーティ フレームワークのソース コードを学習することもできます。
それでは、Intellij IDEA での Debug の使い方を学びましょう。主に次の内容が含まれます:
1. デバッグ入門
2. 基本的な使い方とショートカット キー
3. 変数の表示
4. 計算式
5 、インテリジェントなステップイン
6. ブレークポイント条件の設定
VII. マルチスレッドデバッグ
8. 割り込みデバッグ
まず、IDEA のデバッグモードでインターフェイスを見てください。 以下はIDEAでデバッグモードを開始し、ブレークポイントに入った後のインターフェースです。これはWindowsであり、Macのアイコンなどは多少異なる場合があります。下の図でマークされている 8 つの場所について簡単に説明します。 ① サービスをデバッグ モードで開始し、左側のボタンを押すと実行モードでサービスを開始します。開発中、私は通常、いつでもコードのデバッグを容易にするために、デバッグ モードを直接開始します。 ② ブレークポイント:左側の行番号列を左クリックするか、ショートカットキー Ctrl+F8 を使用してブレークポイントの設定/解除を行います ブレークポイントの線の色は自分で設定できます。 ③ デバッグウィンドウ: アクセス要求が最初のブレークポイントに到達すると、デバッグウィンドウが自動的にアクティブになります。自動的にアクティブ化されない場合は、図 1.2 に示すように、設定に移動して設定できます。 ④ デバッグボタン: 合計 8 つのボタンがあり、これらのボタンにマウスを置くと、対応するショートカット キーが表示されます。図 1.4 に示すように、同じ対応する機能がメニュー バーの [実行] にもあります。 ⑤サービスボタン:サービスの終了/開始、ブレークポイントの設定などがここで行えます。 ⑥メソッド呼び出しスタック: デバッグのためにスレッドによって渡されたすべてのメソッドがここに表示されます。右上隅の [すべてのフレームを表示] ボタンをチェックすると、他のクラス ライブラリのメソッドは表示されません。そうでない場合は、ここにたくさんの方法があります。 ⑦ 変数: 変数領域では、現在のブレークポイントの前にある現在のメソッドの変数を表示できます。 ⑧ウォッチ: 変数を表示するには、変数エリアの変数をウォッチにドラッグして表示できます [図 1.1]
[図 1.2]: 設定でブレークポイントにデバッグウィンドウを表示するにチェックを入れてエントリを要求しますブレークポイントに到達すると、デバッグ ウィンドウが自動的にアクティブになります
[図 1.3]: IDEA の下部にツールバーまたはステータス バーが表示されていない場合は、ビューで開くことができます。ツールバーを表示すると簡単に開くことができます。私たちが使うために。これら 4 つのオプションを自分で試すことができます。
[図 1.4]: メニュー バーの [実行] にはデバッグに対応する機能があり、対応するショートカット キーを表示できます。
2. 基本的な使い方とショートカット キー
デバッグ デバッグ機能は、主に図 1 のボタン 4 と 5 の 2 つのグループに対応します:
1. まず、最初のボタン グループについて話しましょう。 、合計 8 つのボタンは、左から右に次のとおりです。> 実行ポイントの表示 (Alt + F10): カーソルが他の行または他のページにある場合は、 をクリックします。このボタンを使用して、現在のコードが実行される行にジャンプします。
> ステップオーバー (F8): この行にメソッドがある場合は、ステップオーバーして下に進みます。
> ステップイン (F7): 現在の行にメソッドがある場合、そのメソッドを入力できます。通常、カスタム メソッドを入力するために使用されます。 25行目のputメソッド。
> 強制ステップイン (Alt + Shift + F7): 強制ステップイン、基になるソース コードを表示するときに、このメソッドを使用して公式クラス ライブラリに入ることができます。 > ステップアウト (Shift + F8): ステップアウトし、ステップインしたメソッドからメソッド呼び出しポイントまで終了します。この時点では、メソッドは実行されていますが、割り当ては完了していません。 > フレームのドロップ (デフォルトはなし): ロールバック ブレークポイント。詳細は次の章で説明します。 > カーソルまで実行 (Alt + F9): カーソルまで実行します。表示する必要がある行にカーソルを置き、この関数を使用すると、コードはブレークポイントなしでカーソル行まで実行されます。 > 式の評価 (Alt + F8): 式を計算します。これについては、次の章で詳しく説明します。2. 2 番目のボタン グループ (合計 7 つのボタン) は、上から下まで次のとおりです。
[図 2.2]
> Rerun 'xxxx': プログラムを再実行します。プログラム。
> 「技術」アプリケーションの更新 (Ctrl + F5): プログラムを更新します。通常、この機能はコードが変更された後に実行できます。この機能の対応する操作は、図 2.3 に示すように、サービス構成内にあります。
> プログラムの再開 (F9): たとえば、20 行目と 25 行目に 2 つのブレークポイントがあり、現在 20 行目まで実行している場合は、F9 を押して次のブレークポイント (つまり 25 行目) まで実行します。 ).OK)、その後にブレークポイントがないため、F9 キーを押してプロセス全体を実行します。
> プログラムを一時停止: プログラムを一時停止し、デバッグを有効にします。具体的な使い方はまだ見つかっていません。
> 「xxx」を停止 (Ctrl + F2): プログラムを終了するには、連続して 2 回押します。サービスを閉じて再度開始すると、ポートが占有されていると報告される場合があります。これは、サービスが完全に閉じられていないため、すべての JVM プロセスを強制終了する必要があります。
> ブレークポイントの表示 (Ctrl + Shift + F8): すべてのブレークポイントを表示します。これについては後の章で説明します。
> ブレークポイントをミュート: これを選択すると、すべてのブレークポイントが灰色になり、プログラムを直接実行するには、ブレークポイントが無効になります。もう一度クリックすると、ブレークポイントが赤くなり、有効になります。特定のブレークポイントのみを無効にしたい場合は、図 2.4 に示すように、ブレークポイントを右クリックして [有効] をキャンセルすると、この行のブレークポイントが無効になります。
[図 2.3]: 更新プログラム、「更新」アクションでは、更新操作を実行するときに何が行われるかについて、通常は「クラスとリソースの更新」、つまりクラスとリソース ファイルの更新を選択します。
JRebel をアクティベートする方法は最後の章に添付されています。 R 以下のフレーム非アクティブ化は、IDEA ウィンドウがフォーカスを失ったときにトリガーされます。つまり、IDEA からブラウザーに切り替えると、IDEA は自動的にそれを支援します。通常、頻繁に切り替えるとリソースが消費されます。より多くのリソース。
1. 以下のように、IDEAではパラメータが配置されている行の後に現在の変数の値が表示されます。
[図 3.1]
2. パラメータの上にカーソルを置くと、現在の変数情報が表示されます。クリックすると、図 3.3 に示す詳細が開きます。私は通常この方法を使用します、それは速くて便利です。
[図 3.3]
3. 変数の表示。現在のメソッド内のすべての変数が表示されます。
[図 3.4]
4. [ウォッチ] で [新しいウォッチ] をクリックし、表示する変数を入力します。または、変数から Watche にドラッグして表示することもできます。
[写真 3.5]
時計をお持ちでない場合は、下の写真の場所にあるかもしれません。[図 3.6]
[図 3.7]
IV. 計算式 先ほどの計算式は、図 4.1 式の評価 (Alt + F8) のボタンです。この操作を使用すると、デバッグ中に情報を出力せずに式の値を計算できます。
[図 4.1]
1. Alt + F8 または ボタンを押すか、式を選択してから Alt + F8 を押して式を計算するウィンドウをポップアップ表示します。以下に示すように、Enter を押すか、「評価」をクリックして、式を計算します。式の値を計算します。
この式は一般的な変数やパラメータだけでなく、コード行で複数のメソッドを呼び出すと、この方法でメソッドの戻り値を表示できます。
[図 4.2]
2. 変数を設定する 計算式ボックスでは、変数の値を変更することができ、さまざまな値をデバッグするのに便利ですよね。
[図 4.3]
考えてみてください、コード行にはいくつかのメソッドがありますが、どのようにして特定のメソッドのみを選択して入力することができるでしょうか。メソッドに入るにはステップイン(Alt + F7)または強制ステップイン(Alt + Shift + F7)を使用できると前述しましたが、この 2 つの操作はメソッドの呼び出し順序に従って順番に入力されるため、さらに面倒です。
それでは、Smart Step Into がとても便利です、Smart Step Into、この機能は、図 5.1 に示すように、Run、Smart Step Into (Shift + F7) で見ることができます
[図 5.1]
Shift + F7 を押して、図 5.2 に示すように、現在のブレークポイント行が自動的に検索され、入力する必要があるメソッドがリストされます。メソッドをクリックしてメソッドを入力します。
方法が 1 つしかない場合は、Force Step Into と同様に直接入力します。
[図 5.2]
ブレークポイント条件を設定することで、条件が成立した場合はブレークポイントで停止し、そうでない場合はそのまま実行されます。
通常、比較的大きなコレクションや配列を走査してループ内にブレークポイントを設定するとき、変数の値を 1 つずつ確認する必要がありますか?きっと疲れるでしょうし、見逃してしまったかもしれないので、もう一度やる価値はあります。
1. 図 6.1 に示すように、ブレークポイントを右クリックして、現在のブレークポイントの条件を直接設定します。ブレークポイントは、exist を true に設定した場合にのみ有効になります。
[図 6.1]
2. [ブレークポイントの表示] (Ctrl + Shift + F8) をクリックして、すべてのブレークポイントを表示します。
Java Line Breakpoints には、右側にあるすべてのブレークポイントが表示され、ブレークポイントの条件を設定します。
コンソールへのログメッセージを確認すると、図6.3に示すように、現在のブレークポイント行がコンソールに出力されます
このコード行を実行すると inonia\\\\ 式が計算でき、結果は次のように出力されます。コンソール。
インスタンスのフィルタリング、インスタンス ID (図 6.5 のインスタンス ID) を入力しますが、理由はわかりませんが、それを知っている友達はメッセージを残すことができます。
クラスフィルター:クラスフィルター、クラス名に基づくフィルターも失敗しました... パスカウント:ループで使用され、ブレークポイントがループ内にある場合は、この値を設定でき、ループが何回停止するかブレークポイントを指定すると、後続のループはブレークポイントで停止します。[図6.4]
[図6.5]
4. 例外ブレークポイントを設定することで、プログラム内でインターセプトする必要のある例外が発生した場合に、例外行が自動的に配置されます。 。
図6.6に示すように、+記号をクリックしてJava例外ブレークポイントを追加し、例外ブレークポイントを追加します。次に、図 6.7 に示すように、ブレークポイントを必要とする例外クラスを入力すると、「Java 例外ブレークポイント」で追加された例外ブレークポイントを確認できます。
図 6.8 に示すように、ここに NullPointerException 例外ブレークポイントを追加しました。ヌル ポインター例外が発生すると、ヌル ポインター例外行に自動的に配置されます。 [写真6.6][写真6.7]
[写真6.8]
通常、デバッグを行うときは、1 つのスレッドで段階的に実行します。しかし、デバッグ中に、別のリクエストを開始することさえできないことに気づくことがありますか?
これは、デバッグ時の IDEA のデフォルトのブロック レベルが ALL であり、他のスレッドは現在のデバッグ スレッドが終了したときにのみ実行されるためです。図 7.1 に示すように、[ブレークポイントの表示] で [スレッド] を選択し、[デフォルトにする] をクリックしてデフォルトのオプションとして設定できます。
[図 7.1]
図 7.1 の [フレーム] のドロップダウン リストで、現在のスレッドを切り替えることができます。ここでもう一方のスレッドを切り替えます。 、別のデバッグ スレッドに入ります。
[図 7.1]
デバッグの際、再度リクエストを行わずに処理をやり直したいですか?
1. まず、図 8.1 に示すように、このメソッドの呼び出しスタックを確認します。まず、DemoController の insertDemo メソッドに入るように要求し、次に、先頭のメソッドの呼び出しを無視します。現在のブレークポイントがあるメソッドです。
[図 8.1]
2. ブレークポイントのロールバック
いわゆるブレークポイントのロールバックは、実際には、前のメソッド呼び出しの先頭にロールバックすることですが、IDEA では、テストは行ごとにロールバックしたり、Return to したりすることはできません。前のブレークポイントですが、前のメソッドに戻ります。
ロールバックには 2 つの方法があります。1 つは [フレームのドロップ] ボタン (図 8.2) で、サードパーティのクラス ライブラリの他のメソッドを含む、呼び出されたメソッドに従って段階的にロールバックします ([すべてのフレームを表示] ボタンをキャンセルすると表示されます)。図 8.3 に示すように、サードパーティのクラス ライブラリのメソッド。
2 番目の方法は、コールスタックメソッドでロールバックするメソッドを選択し、右クリックして [フレームのドロップ] を選択し (図 8.4)、そのメソッドの前のメソッド呼び出しにロールバックしてから、F9 キーを押します (プログラムの再開) ) プログラムがこのメソッドのブレークポイントに入ったことがわかります。
ただし、注意すべき点は、ブレークポイントのロールバックはプロセスを再度実行することしかできないということです。オブジェクト、コレクション、更新されたデータベースなど、一部のパラメーター/データのステータスが以前に変更されている場合、以前のステータスにロールバックすることはできません。データなど。
グラフ [8.2]
etto [8.4] デバッグ中にリクエストを中断したい場合は、残りのプロセスを再度終了しないでください。
渡されたパラメーターが間違っていることがわかった後、このリクエストを中断する方法 (後続のプロセスによりデータベース データが削除されます...) を実行する必要がある場合があります。サービスを閉じてプログラムを再起動しますか?まあ、私もそうしていました。
正確に言うと、(サービスをシャットダウンする以外に)リクエストを直接中断する方法は見つかりませんでしたが、図9.1に示すように、Force Return、つまり強制的にリターンすることで、以降の処理を回避することができます。 「強制的に戻る」をクリックすると、「戻り値」ウィンドウが表示されます。私のメソッドの戻り値の型は Map なので、ここで結果を直接返して強制的に戻り、これ以上の手順は実行されません。または、新しい HashMap<>() を作成することもできます。[図9.1]
設定ファイルはホットアップデート可能です。場合によっては、サービスが長時間開いていた場合、または多くのファイルが変更されていた場合、ホット アップデートが有効にならず、サービスの再起動が必要になることがあります。 ここでは、私がインターネットで見た永久使用権(クラックされていないもの)を取得する方法を簡単に説明しますが、この方法がいつ利用できなくなるかはわかりません。 ① まず、Facebook または Twitter アカウントが必要です (Twitter が最適です) ② 図 10.1 に示すように、この Web サイト: https://my.jrebel.com/ に入り、ログインします
③ 次に、Install and Acticate で永久アクティベーション コードを取得できます。
④ 図 10.3 に示すように、設定で Jrebel にアクティベーション コードを設定します。 JRebel プラグインがインストールされていない場合は、まず Plugins で JRebel プラグインを検索してインストールします。
[写真10.1]
[写真10.2]
[写真10.3]
以上がIntellij IDEA でのデバッグの使用方法のグラフィカルな紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。