ホームページ  >  記事  >  Java  >  &#printf&# デバッグの改善

&#printf&# デバッグの改善

PHPz
PHPzオリジナル
2024-08-21 06:01:02635ブラウズ

他の言語で読む: English Español 中文

最も一般的なデバッグ手法の 1 つである「printf」デバッグは、ほとんどの人が最初のプログラムを作成するときに直感的に学習できるため、特に人気があります。

「printf」のデバッグには特別なツールが必要ないため、非常に簡単に実行できます。初めてのバグに対処するときは、デバッガーが何であるかを理解する前であっても、コンソールで実行を追跡できるように、プログラムに変数を段階的に出力させることを自然に思いつきます。

最も基本的なデバッグ手法の 1 つであるにもかかわらず、経験豊富な開発者もよく使用します。これは、最適ではないルーチン、一貫性のない状態、マルチスレッドの問題など、あらゆる種類の問題を調査するのに役立ちます。

すでに述べたように、この手法では IDE などの特別なツールを使用する必要はありません。ただし、これを使用している場合は、プログラムのステータスをさらに効率的に追跡できます。

: この記事では、IntelliJ IDEA の機能について説明します。同様の機能は他の IDE でも利用できる場合とできない場合があります。別のツールを使用している場合は、そのツールのドキュメントを参照して、これらの機能も存在するかどうかを確認することを検討してください。

ライブテンプレート

IntelliJ IDEA は、最も一般的なデバッグ ログ パターンのライブ テンプレートを提供します。デバッグ ログにライブ テンプレートを使用するには、対応するコマンドを入力して Tab キーを押します。IntelliJ IDEA は print ステートメントを生成し、カーソルに挿入します。

いくつかの例を見てみましょう。

メソッドのパラメータを登録する

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    // digite 'soutp' aqui, depois pressione 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();

    // digite 'soutv' aqui, pressione Tab e então selecione o 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) {

    // digite 'soutm' aqui

    return null;
}

生成されたコード:

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    System.out.println("ImageUtils.recolor");

    return null;
}

登録ブレークポイント

print ステートメントを使用したデバッグの欠点の 1 つは、手動管理のオーバーヘッドが発生することです。これらをすぐにオンまたはオフにすることはできません。また、誤って妥協して実稼働環境で実行することは絶対に避けるべきです。

このため、デバッグ目的で何かをログに記録する必要がある場合は、管理がはるかに簡単なログ ブレークポイントを使用することをお勧めします。

Depuração

ログ ブレークポイントを設定するには、Shift キーを押しながらタブをクリックします。通常のブレークポイントとは異なり、プログラムの実行は一時停止されませんが、代わりにコンソールに出力されます。

デフォルトでは、プログラムがこの行に到達したことを示すメッセージです。現在のスタック トレースまたはカスタム式の結果をログに記録したい場合は、ブレークポイント設定の 評価してログ チェックボックスの横にあるオプションを使用することもできます。

Depuração

: 登録式には注意してください。副作用を引き起こすものを評価すると、新しいバグや予期しない動作が発生する可能性があります。さらに、ホット コードで使用すると、プログラムの速度が大幅に低下する可能性があります。

ロギング ブレークポイントが多数になった場合、ブレークポイント ダイアログ (実行 | ブレークポイントの表示) で追跡および管理できます:

Depuração

カスタム グループを作成することもできます:

Depuração

これは、ブレークポイントを集中管理するのに役立ちます。たとえば、特定のバグに関連するグループを作成し、後で使用できるように保存できます。問題が解決したら、グループを無効にします。こうすることで、問題が再発した場合でも、すべてを最初から再作成する必要がなくなります。グループを再度アクティブにするだけです。

頻繁なイベントログ

プログラムの実行中に頻繁に発生するイベントの場合、個々のイベントを記録するとコストが高くなる可能性があります。これにより、コンソールにメッセージがあふれるだけでなく、I/O インタラクションが多すぎると、デバッグ セッションが大幅に遅くなる可能性があります。

Depuração

このようなイベントの場合、パスカウント機能を使用すると便利です。 ブレークポイント.

ダイアログからアクセスできます。

Depuração

パス カウントを特定の値に設定すると、対応するブレークポイントは n 番目ごとのヒットのみをトリガーし、レコードが迷惑にならないようにします。

まとめ

print ステートメントを挿入する場合でも、デバッグ用のログ ブレークポイントを設定する場合でも、最新のツールにはデバッグ エクスペリエンスを向上させる機能が備わっています。この投稿では、プロセス全体をより楽しくするための小さなトリックを皆さんに知っていただきたいと思いました。

デバッグとプロファイリングに関連する他の記事に興味がある場合は、私の他の記事をいくつかチェックしてください:

  • Debugger.godMode() – デバッガーを使用して JVM アプリケーションをハックします
  • デバッガーの遅さのトラブルシューティング
  • 非アクティブなアプリケーションのデバッグ
  • createDirectories() の何が問題ですか? - CPU プロファイル ガイド

デバッグを楽しんでください!

以上が&#printf&# デバッグの改善の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。