「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; }
使用列印語句進行偵錯的缺點之一是它們引入了手動管理的開銷。您無法快速打開和關閉它們,並且您絕對不想在生產中犯下運輸和運行它們的錯誤。
因此,如果您需要記錄某些內容以進行調試,我建議使用記錄斷點,因為它們更容易處理。
要設定記錄斷點,請按住 Shift,然後按一下頁邊距。與常規斷點不同,它不會暫停程式執行,而是列印到控制台。
預設情況下,這是一條訊息,表示程式已到達此行。如果您希望記錄目前堆疊追蹤或自訂表達式的結果,也可以使用斷點設定中 Evaluate 和 log 複選框附近的選項。
注意:小心記錄表達式。評估那些導致副作用的因素可能會成為新錯誤或意外行為的來源。此外,當在熱代碼中使用時,它們可能會顯著減慢您的程式速度。
當日誌斷點較多時,可以在斷點對話框中追蹤並管理它們(運行 | 查看斷點):
您甚至可以為他們建立自訂群組:
這將幫助您集中管理斷點。例如,您可以建立與特定錯誤相關的群組並將其儲存以供以後使用。當問題消失後,您只需將其關閉即可。這樣,如果問題再次出現,您不必從頭開始重新建立所有內容。您只需重新開啟該群組即可。
對於程式執行期間大量發生的事件,單獨記錄每個事件可能是多餘的。這不僅會導致控制台充斥著訊息,而且大量的 I/O 互動也會顯著減慢調試會話的速度。
對於這些事件,使用通過次數函數可能會很有用。您可以在斷點.
對話方塊中存取它。將Pass count設為特定值後,只有每次到達n次時才會觸發對應的斷點,確保日誌記錄不會成為麻煩。
無論您是插入列印語句還是設定日誌斷點進行調試,現代工具都具有改善調試體驗的功能。透過這篇文章,我想確保您了解這些讓整個過程更加愉快的小技巧。
如果您對更多與調試和分析相關的文章感興趣,請查看我的其他一些文章:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3