CodeGym /Java Blog /ランダム /IntelliJ IDEA でのデバッグ: 初心者ガイド
John Squirrels
レベル 41
San Francisco

IntelliJ IDEA でのデバッグ: 初心者ガイド

ランダム グループに公開済み
CodeGym コミュニティの皆さん、こんにちは! 今日はデバッグについて話しましょう。デバッグとは何か、また IntelliJ IDEA でデバッグする方法について説明します。この記事は、Java Core についての最低限の知識をすでに持っている人を対象としています。ライブラリを公開するためのフレームワークや複雑な手順は必要ありません。のんびり散策。さあ、快適になって、始めましょう! IntelliJ IDEA でのデバッグ: 初心者ガイド - 1

デバッグモードが必要な理由

すぐに自分自身で何かを明確にしてみましょう。バグのないコードは存在しません...これがまさに人生の仕組みです。したがって、コードが期待どおりに動作しない場合でも、ばらばらになったり、諦めたりする必要はありません。しかし、何をすべきでしょうか?そうですね、System.out.printlnどこにでもステートメントを配置して、エラーを見つけることを期待してコンソール出力をくまなく調べることもできます。とはいえ、注意深いログを使用してデバッグすることは可能です (実際に行う人もいます)。ただし、ローカル マシンでコードを実行できる場合は、デバッグモードを使用することをお勧めします。この記事では、IntelliJ IDEA を使用したプロジェクトのデバッグについて検討することに注意してください。

デバッグモードとは何ですか?

デバッグ モードは、実行中のコードをデバッグ (確認) するためのモードです。指定した場所で実行を停止し、進捗状況を確認することができます。これにより、コード内の特定の場所でのプログラムの状態を理解できます。それはちょうど時計を止めて横からすべてを見ることができるようなものです。クールですよね?私たちの目的は、お気に入りの IntelliJ IDEA 開発環境を使用してアプリケーションをデバッグする方法を迅速かつ簡単に学ぶことです。

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

無料のアドバイスをいくつか紹介します。この記事を読みながら、ここで説明するすべてのことを実行してください。必要な作業はすべてこれに従ってください。あなたが必要なもの:
  1. IntelliJ IDEA バージョン 2019.3.1 以降。これを持っていない人のために、ここにダウンロードできるリンクがあります。Community Edition をダウンロードします。これが私が使用するバージョンです。
  2. この GitHub プロジェクトのクローンを作成し、IDEA を通じてインポートします。
IDEA を開く: デバッグ プレゼンテーションIntelliJ IDEA でのデバッグ: 初心者ガイド - 2プロジェクトを選択し、OKを押します。次に、次のウィンドウが表示されます。 選択したオプションのままにしておきます:外部ソースからプロジェクトをインポートするおよびMaven「完了」をクリックします。プロジェクトをインポートしたので、実際の例を使用して残りのプロセスを説明します。 IntelliJ IDEA でのデバッグ: 初心者ガイド - 3

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

少しでもデバッグを開始するには、ブレークポイントとは何かを理解し、いくつかのホット キーに慣れておく必要があります。ブレークポイントは、アプリケーションの状態に基づいて、アプリケーションの実行を停止する場所を示す特別なマーカーです。ブレークポイントを設定するには、左側のパネルを左クリックするか、コードの場所をクリックしてCtrl+F8を押します。行ブレークポイント、フィールド ウォッチポイント、メソッド ブレークポイントの 3 種類のブレークポイントを見てみましょう。見た目はこんな感じです。
  • 一行で:

    IntelliJ IDEA でのデバッグ: 初心者ガイド - 4

    ステートメントにラムダ式がある場合、IDEA はブレークポイントをステートメント全体に置くか、ラムダ式だけに置くかを選択するよう求めます。

    IntelliJ IDEA でのデバッグ: 初心者ガイド - 5
  • メソッドについて:

    IntelliJ IDEA でのデバッグ: 初心者ガイド - 6
  • クラスについて:

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

デバッグと呼ばれるものをやってみましょう!

私の家系は養蜂家の家系なので、デバッグを説明するために作成したプロジェクトでは、ミツバチが花蜜を集め、花蜜を蜂蜜に加工し、蜂の巣から蜂蜜を採取するプロセスのモデルを説明しています。プロジェクトのルート ディレクトリにあるドキュメントのREADME ファイルによると、蜜が収集されるすべての花の期待される動作は、収集された蜂蜜 ( doubleの形式をとる) の量が半分に等しいことです。集めた蜜。プロジェクトには次のクラスがあります。
  • ミツバチ — 普通の働きバチ
  • BeeQueen — 女王蜂
  • BeeHive — 蜂の巣
  • HoneyPlant — 蜜が集められる蜂蜜植物 (蜜源)
  • Main — ここでpublic static void main()、実行が開始されるメソッドである を見つけます。
このメソッドを実行するとmain()、プログラムが蜂蜜の量を計算しないだけでなく、例外もスローされることがわかります。 IntelliJ IDEA でのデバッグ: 初心者ガイド - 14問題が何であるかを調査して判断する必要があります。右下隅のトレース スタックから、RuntimeException が次の場所でスローされたことがわかりますHoneyPlant.java:20IntelliJ IDEA でのデバッグ: 初心者ガイド - 15これはまさに上で話した内容です。メソッドをデバッグ モードで実行して、この RuntimeException を監視してみましょうmain()。これを行うには、IntelliJ IDEA でメソッドの横にある緑色の三角矢印をクリックしますmain()IntelliJ IDEA でのデバッグ: 初心者ガイド - 16その結果、例外がスローされる直前にプログラムが停止され、次のアイコンが表示されます。 IntelliJ IDEA でのデバッグ: 初心者ガイド - 17IntelliJ IDEA でのデバッグ: 初心者ガイド - 18入手可能な情報をすべて取得するには、「デバッグ」セクションを参照する必要があります。変数がありますアプリケーションのこの部分で使用できるすべての変数を表示するペイン:
  • ネクター = 1.0;
  • 蜜容量 = -1.0。
蜂蜜植物は負の量の蜜を持つことができないため、例外をスローすることは理にかなっています。しかし、なぜこのようなことが起こっているのでしょうか? 結局、15 ~ 17 行目で、蜜の供給が枯渇しているかどうかをチェックし、枯渇している場合はゼロを返します。

	if (nectar == 0) {
   	     return 0;
}
しかし問題は、間違った変数をチェックしていることです。これはコードのエラーです。花で利用可能な蜜の量 ( nectarCapacity変数に格納されている) をチェックする代わりに、プログラムはメソッドのnectarパラメーターの値、つまり花から採取したい蜜の量をチェックします。ここにあります!初めてのバグです!これを修正すると、次のコードが得られます。

	if (nectarCapacity == 0) {
   	     return 0;
}
次に、main()通常の方法でメソッドを実行します(Run 'Main.main()')。例外はスローされず、プログラムは動作します。アプリケーション IntelliJ IDEA でのデバッグ: 初心者ガイド - 19は最後まで実行され、次の応答を返します。

"33.0 honey was produced by 7 bees from 2 honey plants"
これですべてがうまくいくはずですが、この答えは間違っています...ドキュメントのREADME ファイルによると、花の蜜は 2 対 1 の比率で蜂蜜に変換されます。

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
主な方法には明らかに、それぞれ 30 単位と 40 単位の花蜜を持つ 2 つの蜂蜜植物が含まれています。したがって、最終的には 35 ユニットの蜂蜜が得られるはずです。しかし、プログラムは 33 を取得すると言っています。他の 2 つの単位はどこに行ったのでしょうか? 確認してみましょう!これを行うには、が呼び出されるMain.main()28 行目のメソッドにブレークポイントを設定し、メソッドをデバッグ モードで実行します。 beeHive.populateHoney()main()IntelliJ IDEA でのデバッグ: 初心者ガイド - 20この点についてさらに詳しく検討していきます。プログラムは 28 行目を実行する前に実行を停止しました。下部には [デバッグ] セクションがあり、実行中のアプリケーションに関する入手可能な情報がすべて表示されます。すでに述べたように、「変数」ペインには、アプリケーションのこの部分で使用できるすべての変数とオブジェクトが含まれています。[フレーム] ペインには、アプリケーションが実行しているステップが表示されます。前の (フレーム) ステップを確認し、すべてのローカル データを確認できます。プログラムの実行を続行するには、以下に示すように、 F9または緑色のアイコンを押します。IntelliJ IDEA でのデバッグ: 初心者ガイド - 21プログラムを停止するには、赤い四角をクリックします。 IntelliJ IDEA でのデバッグ: 初心者ガイド - 22デバッグ モードでアプリケーションを再起動するには、矢印をクリックします。IntelliJ IDEA でのデバッグ: 初心者ガイド - 23さらに、次の手順に進むことができます。 2 つのキーを使用して段階的にアプリケーションを適用します。
  • F8 — メソッドにステップインせずにコードをステップ実行します。
  • F7 — コードをステップ実行し、メソッドにステップインします。
この例では、F7 キーを押してbeeHive.populateHoney()メソッドにステップインする必要があります。これにステップインすると、次の結果が得られます。 次に、 F8 をIntelliJ IDEA でのデバッグ: 初心者ガイド - 24使用してこのメ​​ソッドをステップ実行し、そこで何が起こるかを説明します。
  • 行 25 — Stream API を使用してすべてのミツバチから蜜を収集します
  • 行 26 — 新しく作成された蜂蜜が既存の蜂蜜に追加されます。
  • 行 27 — 2 単位の蜂蜜が女王蜂に割り当てられます
  • 行 28 — これら 2 つの単位が蜂蜜の総量から除去されます
  • 29 行目 — 女王様はこの蜂蜜を食べます。
それで、行方不明の2つのユニットはそこに行きました!万歳!ビジネス アナリストと話し合った結果、ドキュメントのREADME ファイルにエラーが含まれており、更新する必要があるという結論に達しました。README ファイルを更新しましょう。

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
終わったね。見つかったバグはすべて修正しました。ドヤ顔で落ち着いてコーヒーを飲みながら、Stack Overflow CodeGym の記事を読むことができます :)

要約しましょう

この記事では、次のことを学びました。
  • 誰の作業にもエラーがあり、デバッグはそれらを修正する優れた方法です
  • ブレークポイントとは何か、またブレークポイントにはどのような種類があるのか
  • 例外ブレークポイントを設定する方法
  • デバッグモードでコードをステップ実行する方法

読む記事

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION