首頁 > Java > java教程 > 主體

改進了&#printf&#調試

WBOY
發布: 2024-08-21 06:09:02
原創
960 人瀏覽過

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

「printf」除錯非常容易進行,因為您不需要任何特殊工具。當您遇到第一個錯誤時,甚至在您知道什麼是偵錯器之前,自然要做的就是讓您的程式逐步列印變量,以便您可以追蹤控制台中的執行。

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

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

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

即時模板

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

讓我們來看幾個例子。

註冊方法參數

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;
}
登入後複製

記錄斷點

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

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

Depuración

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

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

Depuración

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

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

Depuración

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

Depuración

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

頻繁事件日誌

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

Depuración

對於這些事件,使用透過計數 函數可能會很有用。您可以在斷點對話框中存取它。

Depuración

傳遞計數設定為特定值後,只有在每次到達n次時才會觸發對應的斷點,確保日誌記錄不會成為麻煩。

概括

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

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

  • Debugger.godMode() – 使用偵錯器破解 JVM 應用程式
  • 除錯器緩慢問題
  • createDirectories() 有什麼問題嗎? - CPU 分析指南
  • 無斷點調試

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

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板