首頁  >  文章  >  Java  >  改進了&#printf&#調試

改進了&#printf&#調試

PHPz
PHPz原創
2024-08-21 06:01:02635瀏覽

閱讀其他語言: English Español 中文

「printf」調試是最常見的調試技術之一,特別受歡迎,因為大多數人在編寫第一個程式時直觀地學習它。

「printf」除錯非常容易進行,因為您不需要任何特殊工具。當你處理第一個 bug 時,甚至在你還不知道什麼是調試器之前,你自然會想到讓你的程式一步步打印變量,這樣你就可以在控制台中跟踪執行。

儘管它是最基本的調試技術之一,但經驗豐富的開發人員也經常使用它。它可以幫助您調查任何類型的問題,例如次優例程、不一致的狀態、多執行緒問題等等。

正如我已經提到的,這種技術不需要您使用任何特殊工具,例如 IDE。然而,如果您正在使用它,它可以讓您更有效地記錄程式狀態。

注意:本文展示了 IntelliJ IDEA 的功能。其他 IDE 中可能有也可能沒有類似的功能。如果您使用其他工具,請考慮檢查其文件以查看這些功能是否也存在。

即時模板

IntelliJ IDEA 為最常見的偵錯日誌記錄模式提供即時範本。若要使用即時範本進行偵錯日誌記錄,請鍵入對應的命令並按 Tab 鍵,IntelliJ IDEA 將產生列印語句並將其插入到遊標處。

讓我們來看一些例子。

註冊方法參數

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;
}

註冊斷點

使用列印語句進行偵錯的缺點之一是它們引入了手動管理的開銷。您無法快速打開和關閉它們,並且您絕對不想意外妥協並在生產中運行它們。

因此,如果您需要記錄某些內容以進行偵錯,我建議使用記錄斷點,因為它們更容易管理。

Depuração

要設定日誌記錄斷點,請按住 Shift,然後按一下標籤。與常規斷點不同,它不會暫停程式執行,而是列印到控制台。

預設情況下,這是一條訊息,表示程式已到達此行。如果您希望記錄目前堆疊追蹤或自訂表達式的結果,也可以使用斷點設定中評估並記錄複選框旁的選項。

Depuração

注意:小心註冊表達式。評估那些導致副作用的因素可能會成為新錯誤或意外行為的來源。此外,當在熱代碼中使用時,它們會顯著減慢您的程式速度。

當記錄斷點變得很多時,您可以在斷點對話框中追蹤和管理它們(運行 | 查看斷點):

Depuração

您甚至可以為他們建立自訂群組:

Depuração

這將有助於您集中管理斷點。例如,您可以建立與特定錯誤相關的群組並將其儲存以供以後使用。問題解決後,停用該群組。這樣,如果問題再次出現,您將不必從頭開始重新建立所有內容。您只需再次重新啟動群組即可。

頻繁事件日誌

對於程式執行期間​​大量發生的事件,記錄每個單獨的事件可能代價過高。這不僅會導致控制台充斥著訊息,而且過多的 I/O 互動也會顯著減慢調試會話的速度。

Depuração

對於此類事件,使用透過計數功能可能會很有用。您可以在 斷點.

對話框中存取它。

Depuração

一旦將傳遞計數設定為特定值,對應的斷點只會在第n次命中時觸發,確保記錄不會成為麻煩。

概括

無論您是插入列印語句還是設定日誌斷點進行調試,現代工具都具有改善調試體驗的功能。透過這篇文章,我想確保您了解這些讓整個過程更加愉快的小技巧。

如果您對更多與調試和分析相關的文章感興趣,請查看我的其他一些文章:

  • Debugger.godMode() – 使用偵錯器破解 JVM 應用程式
  • 調試器緩慢問題排查
  • 除錯不活動的應用程式
  • createDirectories() 有什麼問題嗎? - CPU 設定檔指南

調試愉快!

以上是改進了&#printf&#調試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn