閱讀其他語言: English Español 中文
在典型的偵錯場景中,您將設定斷點來告訴偵錯器何時掛起程式。斷點通常對應於標記進一步調查的起點的時刻。
決定在哪裡設置斷點可能具有挑戰性。在某些情況下,確切的行不清楚,或者您可能更願意根據時間而不是特定程式碼來暫停程式。
在本文中,我們將了解 IntelliJ IDEA 的 暫停程式 功能 - 一種鮮為人知的調試技術,在某些場景(包括上述場景)中可能非常強大。我們將討論它的用例和局限性,並逐步發現其中的秘密。
暫停程式是IntelliJ IDEA偵錯器的功能,它允許您在任何時間點任意暫停您的應用程式。此外,您甚至不需要知道應用程式程式碼。其實你可以忽略它!
要暫停程序,請按一下偵錯器工具列中的暫停程序。然後程式就會在你正在做的事情中間停止。
乍一看,暫停的程序可能看起來與在斷點處暫停的程序一模一樣。然而,這只是在某種程度上是正確的。
將暫停程式視為一種執行緒轉儲加上是正確的。您仍然可以像平常一樣檢查變數和執行緒。但是,一些較高級的功能(例如評估表達式)將無法使用。
使用暫停程序的方法有無數種。它通常可以與傳統斷點互換使用。然而,在某些情況下,使用暫停程序是更合適的方法。讓我們考慮其中的一些。
如果您遇到使用者介面 (UI) 凍結,這通常是由於 UI 執行緒被阻塞。
暫停程式 在這種情況下可能很有用,因為它允許您在應用程式無回應時暫停應用程式並檢查 UI 執行緒的呼叫堆疊。這通常足以診斷問題。
如前所述,暫停程式允許您簡單地忽略原始程式碼,無論如何您可能會遺失原始程式碼。雖然這種情況並不常見,但是當你遇到這種情況時,斷點就沒有任何幫助了。
這就是暫停程序發揮作用的地方!
如果您懷疑有同步問題,例如死鎖或活鎖,暫停程式可以幫助您找到導致問題的確切執行緒和鎖。
在這種情況下,暫停程式並檢查執行緒清單。它將顯示哪些線程被阻止。當您導航到執行點時,您還將看到它們被鎖定的關鍵部分。這些資訊可以幫助指導您找到解決方案。
正如我之前提到的,暫停程式限制您對偵錯器的某些高級功能的存取。如果您在應用程式暫停時嘗試使用某些功能,您可能會看到一條錯誤訊息,內容為暫停操作後無法評估方法。
但是,這個限制有一個捷徑。
暫停應用程式後,繼續逐步執行任何操作。 步入或跨過即可。完成此操作後,您將進入常規偵錯會話,類似於使用斷點掛起應用程式時。所有高級功能現已解鎖!
今天就這樣吧!我希望這些提示和技巧對您有用。
如果您對更多與調試和分析相關的文章感興趣,請查看我的其他一些文章:
如果您希望我介紹有關 Java 調試的任何具體信息,請隨時與我們聯繫!您的意見將有助於優先考慮並發布您最感興趣的內容。
以上是無斷點調試的詳細內容。更多資訊請關注PHP中文網其他相關文章!