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