JavaRush コミュニティの皆さん、こんにちは。今日はデバッグについて説明します。デバッグとは何か、Intellij IDEA でデバッグする方法について説明します。 この記事は、Java Core に関する最低限の知識をすでに持っている人を対象としています。ライブラリを公開するためのフレームワークや複雑なプロセスはありません。歩きやすい。さあ、快適になって、始めましょう!
の文書に基づいて、次のように書かれています。期待される動作- 蜜が収集されるすべての花から (倍精度の値として)、半分に等しい量の蜂蜜が収集されます。集めた蜜。プロジェクトには次のクラスがあります。
ドキュメントのREADME ファイルに、蜜は 2 対 1 の比率で蜂蜜に変わると書かれているからです。
ドキュメントのREADME ファイルにエラーが含まれており、更新する必要があるという結論に達しました。README ファイルを更新しましょう。
ハブの記事を読み続けることができます:)
なぜデバッグが必要なのでしょうか?
すぐにはっきりさせましょう。バグのないコードは存在しません...これが人生の仕組みです。したがって、コードが期待どおりに動作しない場合でも、すぐにぐったりしてすべてを諦めるべきではありません。 でもどうすればいいでしょうか?もちろん、System.out.println
可能な限りどこにでも設定して、エラーを見つけられることを期待してターミナルの出力を並べ替えることもできます。それでも、それは可能です...そして彼らはそれを実行し、ロギングを使用して慎重にそれを実行します(それについてはここで読むことができます)。ただし、ローカル マシンでコードを実行できる場合は、Debugを使用することをお勧めします。この記事では、Intellij IDEA 内のプロジェクトのデバッグについて検討することに注意してください。リモート デバッグについて興味がある場合は、リソースの記事を参照してください。
デバッグとは
デバッグはコードをデバッグ (チェック) するプロセスであり、実行中に指定した場所で停止して実行の進行状況を監視できます。特定の場所でのプログラムの状態を理解します。それはまるで人生を止めて、すべてを外側から眺めることができるのと同じです。クールですよね?私たちの目標は、お気に入りの開発環境である Intellij IDEA を使用してアプリケーションをデバッグする方法を迅速かつ簡単に学ぶことです。デバッグを開始するために必要なもの
私は無料でアドバイスします。記事を読んでいる間、ここで説明することをすべて実行してください。幸いなことに、これにはすべてが揃っています。あなたは何が必要ですか:- Intellij IDEA 開発環境バージョン 2019.3.1 以降。持っていない人のために、ここにダウンロードできるリンクがあります。私が使用するのは Community Edition ですので、Community Edition をダウンロードしてください。
- GitHub からプロジェクトのクローンを作成し、IDEA 経由でインポートします。
ちょっとした理論...約束します:D
デバッグを少し始めるには、breakPoint とは何かを理解し、開始するために必要ないくつかのホットキーを理解する必要があります。 BreakPoint は、アプリケーションを停止する必要がある位置または状態を表示する特別なマーカーです。ブレークポイントを設定するには、左側のサイドバーを左クリックするか、コードの場所をクリックしてCtrl + F8を押します。ブレークポイントには、ラインマーク、変数マーク、メソッドマークの 3 種類があります。次のようになります。-
行ごと:
式にラムダがある場合、IDEA は式を行全体に置くか、具体的にラムダに置くかの選択肢を提供します。
-
メソッドごと:
-
クラスごと
- Bee.java:24 - 24 行目の Bee クラス内
- Main.java:14 - Main クラスの 14 行目
さあ、デバッグの荒野に侵入しましょう
私は世襲養蜂家であるため、デバッグ プレゼンテーションのために、ミツバチが花蜜を集め、花蜜を蜂蜜に加工し、巣から蜂蜜を入手するプロセスを説明するプロジェクトを作成しました。プロジェクトのルートにある README ファイル- 蜂 - 普通の働き蜂。
- BeeQueen - 女王蜂。
- BeeHive - 蜂の巣;
- HoneyPlant - 蜂蜜が採取される蜂蜜植物。
- Main -
public static void main()
プロジェクトを開始するメソッドが配置される場所。
main()
、蜂蜜の量がカウントされないだけでなく、エラーも表示されることがわかります。 どこが間違っているのかを確認する必要があります。右下隅のスタック トレースから、 でHoneyPlant.java:20
RuntimeException がスローされていることがわかります。 これはまさに私たちのケースです。RuntimeException があります。上記のように、そのような例外の検索を追加して、でメソッドを実行しましょう。main()
デバッグモード。これを行うには、Intellij IDEA のメソッドの前にある緑色の三角形の矢印をクリックしますmain()
。 すると、このアイコンの例外がトリガーされる前の瞬間に停止したプログラムが取得されます 。完全な情報を取得するには、「デバッグ」セクションを参照する必要があります。これにはVariablesがあり、アプリケーションのこの部分で使用できるすべての変数が表示されます。
- ネクター = 1.0;
- 蜜容量 = -1.0。
if ( nectar == 0 ) {
return 0;
}
しかし、問題は、間違った変数をチェックしているということです...そして、これはコードのバグです。プログラムは、nectarCapacity変数にある花の蜜の値をチェックする代わりに、メソッドに含まれる蜜から取りたい量である nectar の値をチェックします。これが最初のバグです。したがって、これを正しく入力すると、次の式が得られます。
if ( nectarCapacity == 0) {
return 0;
}
main()
次に、メソッドを通常モードで 実行します(Run `Main.main()`)
。これ以上エラーは発生しません。プログラムは機能しました。アプリケーション は機能し、答えが得られました。 「33.0 個の蜂蜜は、2 つの蜂蜜工場から 7 匹のミツバチによって生産されました。」 すべて問題ありませんが、答えは次のとおりです。間違っています... すべての理由は、## 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 つのキーを使用します。 main
- F8 - コードのセクションを通過し、内部メソッドにはアクセスしません。
- F7 - コードのセクションを調べて、内部メソッドを入力します。
beeHive.populateHoney()
、F7 を押す必要があります。次に進みます。 次に、このメソッドを最後まで使用してF8を使用してデバッグ モードを実行し、このメソッドで何が起こるかを説明します。
- 行 25 - ストリーム API は、すべてのミツバチから蜂蜜を収集するために使用されます。
- 26 行目 - 既存のものに蜂蜜が追加されます。
- 27 行目 - 2 ユニットの蜂蜜が女王に割り当てられます。
- 28 行目 - これら 2 つの単位が蜂蜜の総量から削除されます。
- 29行目 - 子宮はこの蜂蜜を食べます。
## 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要約する
この記事では、次のことがわかりました。- エラーのない作業は存在せず、デバッグはエラーを解決する優れた方法です。
- ブレークポイントとは何ですか、またどのような種類が存在しますか。
- 例外ブレークポイントを構成する方法。
- デバッグモードで移動する方法。
読む記事
- 記事内で使用したプロジェクト
- IntelliJ IDEA とデバッグ: ダイビングではなくシュノーケリング
- プログラミングに関する苦い真実...
- 公式ドキュメント
- ブレークポイントの種類。公式ドキュメント
GO TO FULL VERSION