1. バグ

プログラマーには独自のスラングがありますが、多くの人はそれを専門用語だと考えています。いずれにせよ、それを知ることを避けることはできません。細部まで掘り下げる必要があります。それでは、飛び込んでみましょう。

あなたが最初に知ることになる言葉の 1 つは「バグ」、つまり昆虫です。ソフトウェア開発の文脈では、この言葉はプログラム内のエラー、つまりプログラムが何か間違っているか、まったく正しくないことを行うインスタンスを意味します。あるいは単に奇妙な動作をしているだけです。

しかし、プログラマーが、そのプログラムが、その奇妙な動作にもかかわらず、期待どおりの動作をしていると考える場合、通常、「それはバグではなく、機能です」などと宣言します。それが大量のインターネットミームを生み出しました。

一般に、ソフトウェアの欠陥には、プログラムのロジックのエラー、タイプミス、不正なプログラム アーキテクチャから、コンパイラの問題に至るまで、さまざまな理由が考えられます。いずれにせよ、プログラマーは、プログラム内の実際のバグとその他の「欠点」の両方を修正する必要があります。

「バグ」という言葉の歴史

「バグ」という言葉の起源の最も一般的なバージョンは、伝説のようなものです。

1945 年 9 月、ハーバード大学の科学者は最初のコンピューターの 1 つである Mark II をテストしていました。コンピューターは正常に動作しておらず、すべての基板を検査している過程で、電気機械式リレーの接点の間に蛾が挟まっているのを発見しました。

抽出された昆虫は技術ログにテープで記録され、「初めて実際に発見された昆虫の事例」という記述が添えられていました。

この面白い話は、エラーを意味する「バグ」という言葉が使われるようになったと考えられており、「デバッグ」という言葉はバグを排除することと同義語になりました。


2. プログラムのデバッグ

プログラムのバグを修正するために、プログラマはデバッガと呼ばれる特別なプログラムを使用します。これらのプログラムの中には、マシンコードをデバッグする方法を知っているものもあります。

Java プログラマーは、プログラムのデバッグに IDE を使用します。IntelliJ IDEA、Eclipse、NetBeans など。IntelliJ IDEA は最も強力な IDE であるため、これを例として使用してデバッグ プロセスを説明します。

IntelliJ IDEA は、プログラムを 2 つのモードで実行できます。

実行モード ツールバーアイコン ホットキー
通常の実行 Shift+F10
デバッグモードで開始する Shift+F9

プログラムが開始、実行、終了する通常の実行についてはすでに慣れています。しかし、デバッグ モードには、たくさんの驚きが用意されています。

デバッグモード

デバッグ モードでは、プログラム全体を段階的に実行できます。より正確には、行ごとに移動できます。さらに、プログラムの各ステップ (コードの各行が実行された後) で変数の値を観察できます。そして、その値を変更することもできます。

プログラムのデバッグを最低限でも理解するには、次の 3 つのことを学ぶ必要があります。

  • ブレークポイント
  • ステップバイステップの実行
  • 変数の値を検査する

3.ブレークポイント

IDE を使用すると、コード内にブレークポイントと呼ばれる特別なマーカーを配置できます。デバッグ モードで実行中のプログラムがブレークポイントでマークされた行に到達するたびに、実行は一時停止します。

特定の行にブレークポイントを設定するには、IDEA でその行の左側をクリックするだけです。例:

ブレークポイント IntelliJ IDEA

この行にはブレークポイントがマークされ、IntelliJ IDEA はその行を赤色で強調表示します。

ブレークポイントでマークされた

コードの左側のペインをマウスで 2 回クリックすると、ブレークポイントが削除されます。

ホットキー+の組み合わせを使用するだけで、ブレークポイントを現在の行に配置することもできます。すでにブレークポイントがある行でもう一度+を押すと、ブレークポイントが削除されます。CtrlF8CtrlF8


4. デバッグモードでプログラムを開始します。

Shiftプログラムに少なくとも 1 つのブレークポイントがある場合は、 +を押すF9か「バグ アイコン」をクリックすることでプログラムをデバッグ モードで実行できます。

デバッグ モードで起動した後、プログラムは通常どおり実行されます。ただし、ブレークポイントでマークされたコード行に到達するとすぐに一時停止します。例:

プログラムをデバッグモードで開始する

スクリーンショットの上半分には、2 つのブレークポイントを持つプログラム コードが表示されます。プログラムの実行は、青い線でマークされた 5 行目で停止しました。5 行目はまだ実行されていません。コンソールにはまだ何も出力されていません。

画面の下半分には、デバッグ ペイン (デバッガペイン、コンソール ペイン、およびデバッグ モード用の一連のボタン) が表示されます。

左下のペインにある[プログラムの再開]ボタンを押すと (または を押します)、プログラムの一時停止を解除する (つまり、実行を継続するF9) ことができます。

デバッグモード 3 でプログラムを開始します。

このボタン (または ) を押すとF9、プログラムは次のブレークポイントに到達するか終了するまで実行を続けます。ボタンをクリックした後に表示される内容は次のとおりです。

デバッグモード 4 でプログラムを開始します。

プログラムは 2 番目のブレークポイントで停止し、コンソールに とHelloという単語が表示されます。andこれは、画面に出力を表示する 3 行のうち 2 行だけを実行したことを示しています。


5. ステップバイステップの実行

プログラムがデバッグ モードで実行されている場合は、ステップ実行することもできます。1ステップは1 行です。ステップバイステップの実行には 2 つのホットキーがあります:F7F8: それぞれ、コードの現在の行が実行されます。ただし、その前に、ブレークポイントを使用してプログラムを停止する必要があります。

プログラムを 1 行ずつ実行したい場合は、メソッドの先頭にブレークポイントmain()を設定し、デバッグ モードで実行する必要があります。

プログラムが停止したら、1 行ずつ実行を開始できます。キーを 1 回押すとF81 行が実行されます。

プログラムが停止してキーを 1 回押すと、次のようになりますF8

プログラムをデバッグ モードで開始します。 ステップバイステップの実行

main メソッドの 1 行目はすでに実行されており、現在の行は 2 行目です。スクリーンショットの下部には、単語がHelloすでに画面上に表示されていることがわかります。


6. メソッドへのステップインによるステップバイステップの実行

F7プログラム内に独自のメソッドを記述しており、デバッグ モードでメソッド内で実行する場合、つまり「メソッドにステップ インする」場合は、ではなくを押す必要がありますF8

プログラムをステップ実行し、4 行目で停止したとします。 を押すとF8、IDEA は 4 行目を実行し、5 行目に進みます。

メソッド 2 へのステップインによるステップバイステップの実行

ただし、 を押すとF7、IDEA がメソッドにステップインしますmain2()

メソッド 3 へのステップインによるステップバイステップの実行

とてもシンプルです。メソッド内で何が起こるか、どのように起こるかが特に気にならない場合は、 を押しますF8。重要な場合は、 を押して、F7すべてのコードをステップ実行してください。