最も一般的なデバッグ手法の 1 つである「printf」を使用したデバッグは、ほとんどの人が最初のプログラムを作成するときに直感的に学習できるため、特に人気があります。
「printf」のデバッグには特別なツールが必要ないため、非常に簡単に実行できます。デバッガが何であるかを理解する前であっても、最初のバグに直面したときは、コンソールで実行を追跡できるように、プログラムに変数を段階的に出力させるのが自然なことです。
これは最も基本的なデバッグ手法の 1 つですが、経験豊富な開発者によって広く使用されています。これは、最適ではないルーチン、一貫性のない状態、マルチスレッドの問題など、あらゆる種類の問題を調査するのに役立ちます。
すでに述べたように、この手法では IDE などの特別なツールを使用する必要はありません。ただし、これを使用している場合は、番組ステータスの記録をさらに効率的に行うことができます。
注: この記事では、IntelliJ IDEA の機能について説明します。同様の機能は他の IDE でも利用できる場合とできない場合があります。別のツールを使用している場合は、そのツールのドキュメントをチェックして、これらの機能も存在するかどうかを確認することを検討してください。
IntelliJ IDEA は、最も一般的なデバッグ ログ パターンのライブ テンプレートを提供します。デバッグ ログ用のライブ テンプレートを使用するには、対応する略語を入力して Tab キーを押します。 IntelliJ IDEA は print ステートメントを生成し、カーソルに挿入します。
いくつかの例を見てみましょう。
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { // escriba 'soutp' aquí, luego presione Tab return null; }
生成されたコード:
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { System.out.println("in = " + in + ", mask = " + mask + ", newColor = " + newColor); return null; }
public static double coolMethod(double parameter) { double a = Math.random(); double b = Math.random(); // escriba 'soutv' aquí, presione Tab y luego seleccione el valor return a * b * parameter; }
生成されたコード:
public static double coolMethod(double parameter) { double a = Math.random(); double b = Math.random(); System.out.println("b = " + b); return a * b * parameter; }
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { // escriba 'soutm' aquí return null; }
生成されたコード:
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { System.out.println("ImageUtils.recolor"); return null; }
print ステートメントを使用したデバッグの欠点の 1 つは、手動管理のオーバーヘッドが発生することです。これらをすぐにオンまたはオフにすることはできません。また、それらを出荷して運用環境で実行するという間違いは絶対に犯したくありません。
このため、デバッグ目的で何かをログに記録する必要がある場合は、処理がはるかに簡単なログ ブレークポイントを使用することをお勧めします。
ログ ブレークポイントを設定するには、Shift キーを押しながら余白をクリックします。通常のブレークポイントとは異なり、プログラムの実行を一時停止せず、代わりにコンソールに出力します。
デフォルトでは、プログラムがこの行に到達したことを示すメッセージです。現在のスタック トレースまたはカスタム式の結果をログに記録したい場合は、ブレークポイント設定の 評価してログ チェックボックスの近くのオプションを使用することもできます。
注: 登録式には注意してください。副作用を引き起こすものを評価すると、新しいバグや予期しない動作の原因となる可能性があります。さらに、ホット コードで使用すると、プログラムの速度が大幅に低下する可能性があります。
ログ ブレークポイントが多数になると、ブレークポイント ダイアログ (実行 | ブレークポイントの表示) で追跡および管理できます。
カスタム グループを作成することもできます:
これは、ブレークポイントを一元管理するのに役立ちます。たとえば、特定のバグに関連するグループを作成し、後で使用できるように保存できます。問題がなくなったら、電源をオフにするだけです。こうすることで、問題が再び発生した場合でも、すべてを最初から再作成する必要がなくなります。グループを再度有効にするだけです。
プログラムの実行中に頻繁に発生するイベントの場合、各イベントを個別にログに記録するのは不必要な場合があります。これにより、コンソールにメッセージがあふれるだけでなく、大量の I/O インタラクションによりデバッグ セッションが大幅に遅くなる可能性があります。
これらのイベントの場合、パス カウント 関数を使用すると便利な場合があります。 ブレークポイント ダイアログ ボックスからアクセスできます。
パス数を特定の値に設定すると、対応するブレークポイントは、n 回到達するたびにのみトリガーされるため、ロギングが面倒になりません。
print ステートメントを挿入しているか、デバッグ用のログ ブレークポイントを設定しているかに関係なく、最新のツールにはデバッグ エクスペリエンスを向上させる機能が備わっています。この投稿では、プロセス全体をより楽しくするための小さなトリックを皆さんに知っていただきたいと思いました。
デバッグとプロファイリングに関連する他の記事に興味がある場合は、私の他の記事をいくつかチェックしてください:
以上がprintf デバッグの改善の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。