CodeGym コミュニティの皆さん、こんにちは! 今日はデバッグについて話しましょう。デバッグとは何か、また IntelliJ IDEA でデバッグする方法について説明します。この記事は、Java Core についての最低限の知識をすでに持っている人を対象としています。ライブラリを公開するためのフレームワークや複雑な手順は必要ありません。のんびり散策。さあ、快適になって、始めましょう!
プロジェクトを選択し、OKを押します。次に、次のウィンドウが表示されます。 選択したオプションのままにしておきます:外部ソースからプロジェクトをインポートするおよびMaven。「完了」をクリックします。プロジェクトをインポートしたので、実際の例を使用して残りのプロセスを説明します。
「デバッグ」セクションでアイコンを見つけます。これにより、すべてのブレークポイントがミュートされます。どのブレークポイントが設定されているかを確認するには、左下隅の [デバッグ] セクションに移動してアイコンを見つけるか、
Ctrl +Shift+F8キーを押します。
ブレークポイントのリストに移動すると、次のことが表示されます。
ブレークポイントは 2 つあります。ここ:
表示されるウィンドウで、追加する例外の名前を書き込み、リストから選択して [ OK ] をクリックします。
これで設定方法の入門は終わりです。いくつかの練習に進みます。
プロジェクトのルート ディレクトリにあるドキュメントのREADME ファイルによると、蜜が収集されるすべての花の期待される動作は、収集された蜂蜜 ( doubleの形式をとる) の量が半分に等しいことです。集めた蜜。プロジェクトには次のクラスがあります。
問題が何であるかを調査して判断する必要があります。右下隅のトレース スタックから、RuntimeException が次の場所でスローされたことがわかります
これはまさに上で話した内容です。メソッドをデバッグ モードで実行して、この RuntimeException を監視してみましょう
その結果、例外がスローされる直前にプログラムが停止され、次のアイコンが表示されます。 ![IntelliJ IDEA でのデバッグ: 初心者ガイド - 17]()
入手可能な情報をすべて取得するには、「デバッグ」セクションを参照する必要があります。変数がありますアプリケーションのこの部分で使用できるすべての変数を表示するペイン:
は最後まで実行され、次の応答を返します。
ドキュメントのREADME ファイルによると、花の蜜は 2 対 1 の比率で蜂蜜に変換されます。
この点についてさらに詳しく検討していきます。プログラムは 28 行目を実行する前に実行を停止しました。下部には [デバッグ] セクションがあり、実行中のアプリケーションに関する入手可能な情報がすべて表示されます。すでに述べたように、「変数」ペインには、アプリケーションのこの部分で使用できるすべての変数とオブジェクトが含まれています。[フレーム] ペインには、アプリケーションが実行しているステップが表示されます。前の (フレーム) ステップを確認し、すべてのローカル データを確認できます。プログラムの実行を続行するには、以下に示すように、 F9または緑色のアイコンを押します。
プログラムを停止するには、赤い四角をクリックします。
デバッグ モードでアプリケーションを再起動するには、矢印をクリックします。
さらに、次の手順に進むことができます。 2 つのキーを使用して段階的にアプリケーションを適用します。
使用してこのメソッドをステップ実行し、そこで何が起こるかを説明します。
ドキュメントのREADME ファイルにエラーが含まれており、更新する必要があるという結論に達しました。README ファイルを更新しましょう。
Stack Overflow CodeGym の記事を読むことができます :)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 1](https://cdn.codegym.cc/images/article/c1115cfc-4315-4cb2-a734-137557debb36/800.jpeg)
デバッグモードが必要な理由
すぐに自分自身で何かを明確にしてみましょう。バグのないコードは存在しません...これがまさに人生の仕組みです。したがって、コードが期待どおりに動作しない場合でも、ばらばらになったり、諦めたりする必要はありません。しかし、何をすべきでしょうか?そうですね、System.out.println
どこにでもステートメントを配置して、エラーを見つけることを期待してコンソール出力をくまなく調べることもできます。とはいえ、注意深いログを使用してデバッグすることは可能です (実際に行う人もいます)。ただし、ローカル マシンでコードを実行できる場合は、デバッグモードを使用することをお勧めします。この記事では、IntelliJ IDEA を使用したプロジェクトのデバッグについて検討することに注意してください。
デバッグモードとは何ですか?
デバッグ モードは、実行中のコードをデバッグ (確認) するためのモードです。指定した場所で実行を停止し、進捗状況を確認することができます。これにより、コード内の特定の場所でのプログラムの状態を理解できます。それはちょうど時計を止めて横からすべてを見ることができるようなものです。クールですよね?私たちの目的は、お気に入りの IntelliJ IDEA 開発環境を使用してアプリケーションをデバッグする方法を迅速かつ簡単に学ぶことです。デバッグを開始するために必要なもの
無料のアドバイスをいくつか紹介します。この記事を読みながら、ここで説明するすべてのことを実行してください。必要な作業はすべてこれに従ってください。あなたが必要なもの:- IntelliJ IDEA バージョン 2019.3.1 以降。これを持っていない人のために、ここにダウンロードできるリンクがあります。Community Edition をダウンロードします。これが私が使用するバージョンです。
- この GitHub プロジェクトのクローンを作成し、IDEA を通じてインポートします。
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 2](https://cdn.codegym.cc/images/article/17e9ffe3-eb7b-4623-8f69-9eb804987525/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 3](https://cdn.codegym.cc/images/article/aec7ba95-4a69-443b-bedb-086dc1c5e6f7/800.jpeg)
ちょっとした理論...約束します :D
少しでもデバッグを開始するには、ブレークポイントとは何かを理解し、いくつかのホット キーに慣れておく必要があります。ブレークポイントは、アプリケーションの状態に基づいて、アプリケーションの実行を停止する場所を示す特別なマーカーです。ブレークポイントを設定するには、左側のパネルを左クリックするか、コードの場所をクリックしてCtrl+F8を押します。行ブレークポイント、フィールド ウォッチポイント、メソッド ブレークポイントの 3 種類のブレークポイントを見てみましょう。見た目はこんな感じです。-
一行で:
ステートメントにラムダ式がある場合、IDEA はブレークポイントをステートメント全体に置くか、ラムダ式だけに置くかを選択するよう求めます。
-
メソッドについて:
-
クラスについて:
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 8](https://cdn.codegym.cc/images/article/d8bc0b9a-1820-4de4-8273-492b9b913d35/original.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 9](https://cdn.codegym.cc/images/article/66cb4e35-9e86-438f-8fa4-92b873b4ba40/original.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 10](https://cdn.codegym.cc/images/article/8697b538-2c17-4bd9-a793-7337f275954a/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 11](https://cdn.codegym.cc/images/article/60e43934-0085-4b23-8069-7451a73225f9/800.jpeg)
- Bee.java:24 — 24 行目の Bee クラス内
- Main.java:14 — Main クラスの 14 行目
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 12](https://cdn.codegym.cc/images/article/38f2b808-1d6e-439d-a17c-ec0d9281eba5/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 13](https://cdn.codegym.cc/images/article/ad064f9c-393e-4dae-a3a5-bf5d8bbed0d0/800.jpeg)
デバッグと呼ばれるものをやってみましょう!
私の家系は養蜂家の家系なので、デバッグを説明するために作成したプロジェクトでは、ミツバチが花蜜を集め、花蜜を蜂蜜に加工し、蜂の巣から蜂蜜を採取するプロセスのモデルを説明しています。- ミツバチ — 普通の働きバチ
- BeeQueen — 女王蜂
- BeeHive — 蜂の巣
- HoneyPlant — 蜜が集められる蜂蜜植物 (蜜源)
- Main — ここで
public static void main()
、実行が開始されるメソッドである を見つけます。
main()
、プログラムが蜂蜜の量を計算しないだけでなく、例外もスローされることがわかります。 ![IntelliJ IDEA でのデバッグ: 初心者ガイド - 14](https://cdn.codegym.cc/images/article/f1fafa96-93bc-44a6-b8ac-ffc7f13505cf/800.jpeg)
HoneyPlant.java:20
。 ![IntelliJ IDEA でのデバッグ: 初心者ガイド - 15](https://cdn.codegym.cc/images/article/fe230d37-a05c-4184-a645-20d652db1d7d/800.jpeg)
main()
。これを行うには、IntelliJ IDEA でメソッドの横にある緑色の三角矢印をクリックしますmain()
。 ![IntelliJ IDEA でのデバッグ: 初心者ガイド - 16](https://cdn.codegym.cc/images/article/4049098c-ac3c-42a9-96cc-538eaaa8ddbe/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 17](https://cdn.codegym.cc/images/article/55800a8f-0e9d-4d82-bc7b-4606d3b70b34/original.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 18](https://cdn.codegym.cc/images/article/0dcf232e-79a6-4881-adda-6fa1ab67ad5a/800.jpeg)
- ネクター = 1.0;
- 蜜容量 = -1.0。
if (nectar == 0) {
return 0;
}
しかし問題は、間違った変数をチェックしていることです。これはコードのエラーです。花で利用可能な蜜の量 ( nectarCapacity変数に格納されている) をチェックする代わりに、プログラムはメソッドのnectarパラメーターの値、つまり花から採取したい蜜の量をチェックします。ここにあります!初めてのバグです!これを修正すると、次のコードが得られます。
if (nectarCapacity == 0) {
return 0;
}
次に、main()
通常の方法でメソッドを実行します(Run 'Main.main()')
。例外はスローされず、プログラムは動作します。アプリケーション ![IntelliJ IDEA でのデバッグ: 初心者ガイド - 19](https://cdn.codegym.cc/images/article/49122a62-d65b-4e24-9014-7d95a8b30fad/800.jpeg)
"33.0 honey was produced by 7 bees from 2 honey plants"
これですべてがうまくいくはずですが、この答えは間違っています...
## 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](https://cdn.codegym.cc/images/article/6cf01a75-280e-4bb8-8a46-b9529b38d971/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 21](https://cdn.codegym.cc/images/article/9a0827fa-1643-4491-b6a0-b18cde955de0/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 22](https://cdn.codegym.cc/images/article/1f5d7264-0d0f-4e60-9dc6-d7f0dcbba379/800.jpeg)
![IntelliJ IDEA でのデバッグ: 初心者ガイド - 23](https://cdn.codegym.cc/images/article/d384cc05-1833-4054-931f-2cdac82c1c87/800.jpeg)
- F8 — メソッドにステップインせずにコードをステップ実行します。
- F7 — コードをステップ実行し、メソッドにステップインします。
beeHive.populateHoney()
メソッドにステップインする必要があります。これにステップインすると、次の結果が得られます。 次に、 F8 を![IntelliJ IDEA でのデバッグ: 初心者ガイド - 24](https://cdn.codegym.cc/images/article/0b00e810-8436-4d79-9fc8-c1e272b03ec8/800.jpeg)
- 行 25 — Stream API を使用してすべてのミツバチから蜜を収集します
- 行 26 — 新しく作成された蜂蜜が既存の蜂蜜に追加されます。
- 行 27 — 2 単位の蜂蜜が女王蜂に割り当てられます
- 行 28 — これら 2 つの単位が蜂蜜の総量から除去されます
- 29 行目 — 女王様はこの蜂蜜を食べます。
## 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.
終わったね。見つかったバグはすべて修正しました。ドヤ顔で落ち着いてコーヒーを飲みながら、要約しましょう
この記事では、次のことを学びました。- 誰の作業にもエラーがあり、デバッグはそれらを修正する優れた方法です
- ブレークポイントとは何か、またブレークポイントにはどのような種類があるのか
- 例外ブレークポイントを設定する方法
- デバッグモードでコードをステップ実行する方法
GO TO FULL VERSION