首頁  >  文章  >  Java  >  無斷點調試

無斷點調試

王林
王林原創
2024-08-14 10:38:40869瀏覽

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

在典型的偵錯場景中,您將設定斷點來告訴偵錯器何時掛起程式。斷點通常對應於標記進一步調查的起點的時刻。

決定在哪裡設置斷點可能具有挑戰性。在某些情況下,確切的行不清楚,或者您可能更願意根據時間而不是特定程式碼來暫停程式。

在本文中,我們將了解 IntelliJ IDEA 的 暫停程式 功能 - 一種鮮為人知的調試技術,在某些場景(包括上述場景)中可能非常強大。我們將討論它的用例和局限性,並逐步發現其中的秘密。

什麼是暫停?

暫停程式是IntelliJ IDEA偵錯器的功能,它允許您在任何時間點任意暫停您的應用程式。此外,您甚至不需要知道應用程式程式碼。其實你可以忽略它!

Depurar sem Pontos de Interrupção

要暫停程序,請按一下偵錯器工具列中的暫停程序。然後程式就會在你正在做的事情中間停止。

限制

乍一看,暫停的程序可能看起來與在斷點處暫停的程序一模一樣。然而,這只是在某種程度上是正確的。

Depurar sem Pontos de Interrupção

暫停程式視為一種執行緒轉儲加上是正確的。您仍然可以像平常一樣檢查變數和執行緒。但是,一些較高級的功能(例如評估表達式)將無法使用。

使用案例

使用暫停程序的方法有無數種。它通常可以與傳統斷點互換使用。然而,在某些情況下,使用暫停程序是更合適的方法。讓我們考慮其中的一些。

應用程式無回應

如果您遇到使用者介面 (UI) 凍結,這通常是由於 UI 執行緒被阻塞。

Depurar sem Pontos de Interrupção

暫停程式 在這種情況下可能很有用,因為它允許您在應用程式無回應時暫停應用程式並檢查 UI 執行緒的呼叫堆疊。這通常足以診斷問題。

缺少字體

如前所述,暫停程式允許您簡單地忽略原始程式碼,無論如何您可能會遺失原始程式碼。雖然這種情況並不常見,但是當你遇到這種情況時,斷點就沒有任何幫助了。

這就是暫停程序發揮作用的地方!

Depurar sem Pontos de Interrupção

鎖具

如果您懷疑有同步問題,例如死鎖或活鎖,暫停程式可以幫助您找到導致問題的確切執行緒和鎖。

Depurar sem Pontos de Interrupção

在這種情況下,暫停程式並檢查執行緒清單。它將顯示哪些線程被阻止。當您導航到執行點時,您還將看到它們被鎖定的關鍵部分。這些資訊可以幫助指導您找到解決方案。

秘密的逐步提示

正如我之前提到的,暫停程式限制您對偵錯器的某些高級功能的存取。如果您在應用程式暫停時嘗試使用某些功能,您可能會看到一條錯誤訊息,內容為暫停操作後無法評估方法

Depurar sem Pontos de Interrupção

但是,這個限制有一個捷徑。

暫停應用程式後,繼續逐步執行任何操作。 步入跨過即可。完成此操作後,您將進入常規偵錯會話,類似於使用斷點掛起應用程式時。所有高級功能現已解鎖!

結論

今天就這樣吧!我希望這些提示和技巧對您有用。

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

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

如果您希望我介紹有關 Java 調試的任何具體信息,請隨時與我們聯繫!您的意見將有助於優先考慮並發布您最感興趣的內容。

以上是無斷點調試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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