JavaRush /Java Blog /Random-JA /Intellij IDEA でのデバッグ: 初心者向けガイド
Roman Beekeeper
レベル 35

Intellij IDEA でのデバッグ: 初心者向けガイド

Random-JA グループに公開済み
JavaRush コミュニティの皆さん、こんにちは。今日はデバッグについて説明します。デバッグとは何か、Intellij IDEA でデバッグする方法について説明します。 Intellij IDEA でのデバッグ: 初心者向けガイド - 1この記事は、Java Core に関する最低限の知識をすでに持っている人を対象としています。ライブラリを公開するためのフレームワークや複雑なプロセスはありません。歩きやすい。さあ、快適になって、始めましょう!

なぜデバッグが必要なのでしょうか?

すぐにはっきりさせましょう。バグのないコードは存在しません...これが人生の仕組みです。したがって、コードが期待どおりに動作しない場合でも、すぐにぐったりしてすべてを諦めるべきではありません。 Intellij IDEA でのデバッグ: 初心者向けガイド - 2でもどうすればいいでしょうか?もちろん、System.out.println可能な限りどこにでも設定して、エラーを見つけられることを期待してターミナルの出力を並べ替えることもできます。それでも、それは可能です...そして彼らはそれを実行し、ロギングを使用して慎重にそれを実行します(それについてはここで読むことができます)。ただし、ローカル マシンでコードを実行できる場合は、Debugを使用することをお勧めします。この記事では、Intellij IDEA 内のプロジェクトのデバッグについて検討することに注意してください。リモート デバッグについて興味がある場合は、リソースの記事を参照してください。

デバッグとは

Intellij IDEA でのデバッグ: 初心者向けガイド - 3デバッグはコードをデバッグ (チェック) するプロセスであり、実行中に指定した場所で停止して実行の進行状況を監視できます。特定の場所でのプログラムの状態を理解します。それはまるで人生を止めて、すべてを外側から眺めることができるのと同じです。クールですよね?私たちの目標は、お気に入りの開発環境である Intellij IDEA を使用してアプリケーションをデバッグする方法を迅速かつ簡単に学ぶことです。

デバッグを開始するために必要なもの

私は無料でアドバイスします。記事を読んでいる間、ここで説明することをすべて実行してください。幸いなことに、これにはすべてが揃っています。あなたは何が必要ですか:
  1. Intellij IDEA 開発環境バージョン 2019.3.1 以降。持っていない人のために、ここにダウンロードできるリンクがあります。私が使用するのは Community Edition ですので、Community Edition をダウンロードしてください。
  2. GitHub からプロジェクトのクローンを作成し、IDEA 経由でインポートします。
IDEA を開く: デバッグ プレゼンテーションIntellij IDEA でのデバッグ: 初心者向けガイド - 4プロジェクトを選択し、[OK]をクリックして取得します。 外部ソース、Maven からプロジェクトをインポートしたままにし、[完了]をクリックします。プロジェクトをインポートしたら、実際の例を使用してプロセスを説明できます。 Intellij IDEA でのデバッグ: 初心者向けガイド - 5

ちょっとした理論...約束します:D

デバッグを少し始めるには、breakPoint とは何かを理解し、開始するために必要ないくつかのホットキーを理解する必要があります。 BreakPoint は、アプリケーションを停止する必要がある位置または状態を表示する特別なマーカーです。ブレークポイントを設定するには、左側のサイドバーを左クリックするか、コードの場所をクリックしてCtrl + F8を押します。ブレークポイントには、ラインマーク、変数マーク、メソッドマークの 3 種類があります。次のようになります。
  • 行ごと:

    Intellij IDEA でのデバッグ: 初心者向けガイド - 6

    式にラムダがある場合、IDEA は式を行全体に置くか、具体的にラムダに置くかの選択肢を提供します。

    Intellij IDEA でのデバッグ: 初心者向けガイド - 7
  • メソッドごと:

    Intellij IDEA でのデバッグ: 初心者向けガイド - 8
  • クラスごと

    Intellij IDEA でのデバッグ: 初心者向けガイド - 9
ブレークポイントは、追加時と同じ手順で削除できます。状況によっては、それらを非アクティブ (ミュート) にする必要がある場合があります。Intellij IDEA でのデバッグ: 初心者向けガイド - 10これを行うには、[デバッグ] セクションに、すべてのブレークポイントを非アクティブにするアイコンがあります 。どのブレークポイントがすでに設定されているかを確認するには、左下隅の [デバッグ] に移動してアイコンを見つける Intellij IDEA でのデバッグ: 初心者向けガイド - 11か、Ctrl+Shift+F8を押します。 ブレークポイントのリストに移動すると、次のことがIntellij IDEA でのデバッグ: 初心者向けガイド - 12表示されます。 Intellij IDEA でのデバッグ: 初心者向けガイド - 13ここ:
  • Bee.java:24 - 24 行目の Bee クラス内
  • Main.java:14 - Main クラスの 14 行目
プロジェクトのクローンを作成する場合、これらのブレークポイントは存在しないことに注意してください。ブレークポイントは自分で設定する必要があります。「Java 例外ブレークポイント」セクションもあります。とても便利なものです。これを使用すると、暗黙的なブレークポイントを追加して、例外または特定の例外をスローする前にプログラムを停止することができます。RuntimeException の暗黙的なブレークポイントを追加しましょう。これは簡単に行うことができます。左上隅にプラス記号「+」があります。それをクリックして[Java 例外ブレークポイント]を選択します。 Intellij IDEA でのデバッグ: 初心者向けガイド - 14表示されるウィンドウで、追加する必要がある例外の名前を書き込み、提案されたリストから選択して [ OK ] Intellij IDEA でのデバッグ: 初心者向けガイド - 15をクリックします。 この教育プログラムは終了し、演習に進みます。

さあ、デバッグの荒野に侵入しましょう

Intellij IDEA でのデバッグ: 初心者向けガイド - 16私は世襲養蜂家であるため、デバッグ プレゼンテーションのために、ミツバチが花蜜を集め、花蜜を蜂蜜に加工し、巣から蜂蜜を入手するプロセスを説明するプロジェクトを作成しました。プロジェクトのルートにある README ファイルの文書に基づいて、次のように書かれています。期待される動作- 蜜が収集されるすべての花から (倍精度の値として)、半分に等しい量の蜂蜜が収集されます。集めた蜜。プロジェクトには次のクラスがあります。
  • 蜂 - 普通の働き蜂。
  • BeeQueen - 女王蜂。
  • BeeHive - 蜂の巣;
  • HoneyPlant - 蜂蜜が採取される蜂蜜植物。
  • Main -public static void main()プロジェクトを開始するメソッドが配置される場所。
メソッドを実行するとmain()、蜂蜜の量がカウントされないだけでなく、エラーも表示されることがわかります。 Intellij IDEA でのデバッグ: 初心者向けガイド - 17どこが間違っているのかを確認する必要があります。右下隅のスタック トレースから、 でHoneyPlant.java:20RuntimeException がスローされていることがわかります。 これはまさに私たちのケースです。RuntimeException があります。上記のように、そのような例外の検索を追加して、でメソッドをIntellij IDEA でのデバッグ: 初心者向けガイド - 18実行しましょう。main()デバッグモード。これを行うには、Intellij IDEA のメソッドの前にある緑色の三角形の矢印をクリックしますmain()Intellij IDEA でのデバッグ: 初心者向けガイド - 19すると、このアイコンの例外がトリガーされる前の瞬間に停止したプログラムが取得されます Intellij IDEA でのデバッグ: 初心者向けガイド - 20Intellij IDEA でのデバッグ: 初心者向けガイド - 21。完全な情報を取得するには、「デバッグ」セクションを参照する必要があります。これにはVariablesがあり、アプリケーションのこの部分で使用できるすべての変数が表示されます。
  • ネクター = 1.0;
  • 蜜容量 = -1.0。
蜂蜜植物に含まれる蜜の量の値が負になることはできないため、例外は公平にスローされます。しかし、なぜこのようなことが起こるのでしょうか? 結局のところ、蜜がなくなった場合に 15 ~ 17 行目でゼロ値が返されるというチェックがあります。
if ( nectar == 0 ) {
         return 0;
}
しかし、問題は、間違った変数をチェックしているということです...そして、これはコードのバグです。プログラムは、nectarCapacity変数にある花の蜜の値をチェックする代わりに、メソッドに含まれるから取りたい量である nectar の値をチェックします。これが最初のバグです。したがって、これを正しく入力すると、次の式が得られます。
if ( nectarCapacity == 0) {
         return 0;
}
main()次に、メソッドを通常モードで 実行します(Run `Main.main()`)。これ以上エラーは発生しません。プログラムは機能しました。アプリケーション Intellij IDEA でのデバッグ: 初心者向けガイド - 22は機能し、答えが得られました。 「33.0 個の蜂蜜は、2 つの蜂蜜工場から 7 匹のミツバチによって生産されました。」 すべて問題ありませんが、答えは次のとおりです。間違っています... すべての理由は、ドキュメントのREADME ファイルに、蜜は 2 対 1 の比率で蜂蜜に変わると書かれているからです。
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
メインのメソッドから、2 つの蜂蜜工場があり、それぞれ 30 単位と 40 単位の蜜があることがわかります。したがって、最終的には 35 単位の蜂蜜が得られるはずです。そして彼は次のように書いています。 33. 他の 2 つのユニットはどこに行ったのでしょうか?...今すぐ見つけてみましょう! Main.main()これを行うには、メソッドの 28 行目にブレークポイントを設定し、そこでメソッドを実行し、メソッドをデバッグ モードで beeHive.populateHoney()実行する必要があります。この点を詳しく見てみましょう。プログラムは 28 行目を実行する前に停止しました。下部には [デバッグ] セクションがあり、実行中のアプリケーションに関するすべての情報が説明されています。すでに述べたように、変数部分には、アプリケーションのこの部分からアクセスできるすべての変数とオブジェクトが含まれています。フレーム部分には、アプリケーションが実行するステップが表示されます。前のステップを参照して、すべてのローカル データを取得できます。プログラムの動作を継続するには、以下に示すように、 F9または緑色のアイコンを押すことができます。 プログラムを停止するには、赤い四角をクリックする必要があります 。 アプリケーションをデバッグ モードで再起動するには、矢印をクリックする必要があります。 次に、アプリケーションを段階的に実行するには、2 つのキーを使用します。 mainIntellij IDEA でのデバッグ: 初心者向けガイド - 23Intellij IDEA でのデバッグ: 初心者向けガイド - 24Intellij IDEA でのデバッグ: 初心者向けガイド - 25Intellij IDEA でのデバッグ: 初心者向けガイド - 26
  • F8 - コードのセクションを通過し、内部メソッドにはアクセスしません。
  • F7 - コードのセクションを調べて、内部メソッドを入力します。
したがって、メソッドを操作に移すにはbeeHive.populateHoney()、F7 を押す必要があります。次に進みます。 次に、このメソッドを最後まで使用してF8Intellij IDEA でのデバッグ: 初心者向けガイド - 27を使用してデバッグ モードを実行し、このメソッドで何が起こるかを説明します。
  • 行 25 - ストリーム API は、すべてのミツバチから蜂蜜を収集するために使用されます。
  • 26 行目 - 既存のものに蜂蜜が追加されます。
  • 27 行目 - 2 ユニットの蜂蜜が女王に割り当てられます。
  • 28 行目 - これら 2 つの単位が蜂蜜の総量から削除されます。
  • 29行目 - 子宮はこの蜂蜜を食べます。
そこにこの 2 つのユニットが行きました。万歳!ビジネス アナリストとやり取りした結果、ドキュメントのREADME ファイルにエラーが含まれており、更新する必要があるという結論に達しました。README ファイルを更新しましょう。
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
以上です。見つかったバグはすべて修正されたので、落ち着いてコーヒーを飲みながら、スマートな見た目で JavaRushハブの記事を読み続けることができます:)

要約する

この記事では、次のことがわかりました。
  • エラーのない作業は存在せず、デバッグはエラーを解決する優れた方法です。
  • ブレークポイントとは何ですか、またどのような種類が存在しますか。
  • 例外ブレークポイントを構成する方法。
  • デバッグモードで移動する方法。

読む記事

私の他の記事も参照してください。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION