深入Java除錯技術 -Ari Noman
軟體錯誤是開發過程中不可避免的一部分。因此,除錯是每個程式設計師都應具備的一項核心技能。因此,Java除錯是每個程式設計師都應具備的一項核心技能。
它不僅可以幫助您瞭解程式流程,還可以提高程式碼質量。最後,它提高了您作為開發人員解決問題的能力,並最終提供了質量更高的軟體。
本文深入探討了Java除錯的一些最重要的技巧和技術。在生產環境中除錯Java時,我們還將介紹最佳實踐。
本節彙總了除錯Java專案時要使用的一些技巧和竅門,包括斷點,步驟過濾器,拖放到框架等。即使在最複雜的情況下也可以應用這些。
條件斷點
一個斷點用於指定的地步除錯時,程式的執行應停止。透過暫時掛起執行,您可以調查程式的欄位和變數,更改其值等等。條件斷點設定為在滿足特定條件時觸發,以便您可以檢查程式的狀態。一般透過IDE設定實現。
更多型別的斷點
除了上面介紹的斷點型別外,還有其他型別的斷點,但是這取決於您使用的Java IDE。它們包括:
- 基於事件的斷點 -這些斷點與事件相關,通常在遇到偵錯程式識別的事件時觸發。
- 欄位觀察點 -每當給定欄位或表示式的值更改時,這種型別的斷點將停止執行程式。除錯時,可以指定欄位觀察點以在讀取,修改或同時讀取和/或表示式時停止執行。
- 方法斷點 -用於在到達或退出指定方法或其實現時暫停程式。這使您可以檢查特定方法的進入或退出條件。
- 行斷點 -當程式到達斷點中設定的特定程式碼行時,暫停程式的執行。
使用Rookout使使用斷點更容易
Rookout是下一代除錯平臺,旨在幫助開發人員在程式程式碼中新增不間斷的斷點,以便他們可以收集所需的任何型別的資料。它允許您指定規則以完善何時或如何觸發斷點的條件。
藉助斷點上的斷點進行除錯的一件很酷的事情是它的斷點狀態功能-一個簡單的可視指示器,可提供有關斷點行為方式的快速反饋。斷點狀態顯示為斷點旁邊(在右側窗格中)的警告標誌或燈泡。
轉換中的斷點狀態有五種型別,分別是:
- 活躍(純紫色)
- 待處理(紫色
- 警告(帶三角形的純紫色)
- 錯誤(紫色,帶有三角形)
- 失效(灰色)
斷點狀態功能使您甚至可以在收到日誌行或除錯訊息之前就對程式有所瞭解。此資訊使您的除錯更加容易。
步驟濾波器
透過步驟篩選,您可以定義在除錯期間可以跳過的程式包。當您需要從一個類轉換到另一個類,訪問外部庫或使用框架而不測試框架的類時,這一點尤其重要。
透過使用步驟篩選器功能限制轉換,可以跳過特定的程式包。在Eclipse中,可以透過“ 視窗首選項”>“ Java除錯”>“步驟過濾”來配置步驟過濾器。
Drop to frame
此技術使您可以在除錯過程中選擇並重新執行程式的一部分。您可以選擇呼叫堆疊中的任何幀,並將偵錯程式設定為從該點重新啟動。
要使用此功能,請在堆疊中選擇一個框架或一個關卡,然後在“除錯”檢視中單擊“ Drop-to-frame ”按鈕。
儘管此功能執行某種後退或重置,但它不會影響您的欄位或現有資料。例如,如果您將一些條目寫入資料庫,然後下降到上一個級別或框架,則這些條目仍將保留在資料庫中。
遠端除錯
大多數Java IDE(例如Eclipse)允許開發人員除錯在另一臺裝置或Java虛擬機器(JVM)上執行的應用程式。但是,您將需要使用某些標誌來啟動Java程式。
下面的程式碼片段演示瞭如何完成此操作:
Java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp: transport=dt_socket, server=y, suspend=y, address=5005 |
Eclipse使用者可以輸入主機名和埠號進行連線以進行遠端除錯.
在生產中除錯Java
當今的軟體開發環境節奏如此之快,因此研發團隊一直在努力透過將程式碼更快地投入生產來滿足這些需求。但是,無論您的測試過程有多麼嚴格,有時都會出錯。
此外,當程式碼投入生產且實際資料正在系統中流動時,事情可能會很快消失。為了在系統擴充套件時保持領先地位,解決應用程式中的潛在漏洞很重要。
每個Java開發人員都可以實施以下策略:
- 識別何時發生錯誤
- 評估錯誤對優先順序的嚴重程度
- 找出導致程式執行錯誤的狀態
- 接下來,跟蹤並解決根本原因
- 最後,部署有效的修補程式
除了使用上述五步策略之外,還應遵循一些最佳生產除錯實踐:
提升日誌記錄級別
如果錯誤日誌包含足夠詳細的訊息,則除錯應用程式會更容易。在大多數情況下,錯誤訊息沒有提供足夠的上下文,因此程式設計師應增加日誌級別。
這使您能夠捕獲整個上下文並瞭解導致錯誤的確切原因。每條日誌行都應幫助您跟蹤錯誤的根本原因。
一種實際的但經常未充分利用的跟蹤錯誤來源的方法是在每個執行緒的應用程式入口點生成UUID。
集中日誌
一個有效的記錄機制處理的生產或應用程式生命週期的任何其他階段期間的錯誤時應該優先。
在會話期間記錄所有重要事件並將日誌儲存在集中式伺服器中進行分析可以使除錯更加容易。
它還可幫助您在跟蹤關鍵產品指標時,關注應用程式出現問題的情況。
檢查堆疊跟蹤和其他日誌
除錯異常時,堆疊跟蹤會派上用場。它們可幫助您確定程式崩潰時已呼叫了哪些函式。
使用堆疊跟蹤,可以更容易地找出問題出在哪裡,因為您可以檢視導致異常的呼叫的順序。
複製例項
保留日誌後,重要的是要複製情況/例項。這可以透過建立類似的環境來完成,以便您可以在IDE中看到問題。
重現情況有助於解決錯誤,因為您可以更好地理解程式碼和環境。
總結
Java除錯過程不必是一場噩夢。您只需要具有創新的心態並使用正確的工具即可。退出功能就是這樣一種工具,可以幫助開發人員加快除錯過程。它旨在幫助您以更高的置信度,速度和準確性來識別,診斷和解決程式碼中的錯誤。
相關文章
- Web除錯技術詳解Web除錯
- Windows 反除錯技術——OpenProcess 許可權過濾Windows除錯
- 深入理解Android逆向除錯原理Android除錯
- Java序列化技術即將被廢除!!!Java
- Java除錯大法,來了~Java除錯
- Android應用方法隱藏及反除錯技術淺析Android除錯
- 深入理解Sora技術原理|得物技術Sora
- 深入分析 Java Web 技術內幕讀後總結JavaWeb
- 如何技術對接接入AG介面API產品(AG介面除錯)API除錯
- 深入理解冪等技術
- 除錯篇——除錯物件與除錯事件除錯物件事件
- java反射技術Java反射
- Java中使用JMX除錯簡介Java除錯
- 不同Java除錯方法總結 - VardhanJava除錯
- 【Java】Debug斷點除錯常用技巧Java斷點除錯
- Java安全之jar包除錯技巧JavaJAR除錯
- Java程式中除錯Python程式方法Java除錯Python
- 1269道Java技術答疑,阿里技術專家幫你Java技術進階Java阿里
- Java 微信支付通知本地除錯解決辦法 Java 微信支付通知如何除錯Java除錯
- 《深入react技術棧》之表單React
- 深入React技術棧(1):簡介React
- 深入理解零拷貝技術
- 學什麼技術比較好呢?IT技術很不錯
- 《深入分析Java Web技術內幕》讀書筆記 - 第1章 深入Web請求過程JavaWeb筆記
- 2020年最佳Java除錯工具(翻譯)Java除錯
- 淺談1——用Eclipse除錯JAVA程式Eclipse除錯Java
- Java專案除錯技巧及版本控制Java除錯
- HDC2021技術分論壇:分散式除錯、調優能力解決方案分散式除錯
- java技術點整理Java
- Java中Servlet技術JavaServlet
- 5⃣️ Java IO 技術Java
- 2018深入解析Android熱修復技術Android
- 深入理解[Future模式]原理與技術模式
- 新興技術研究:深入洞悉元宇宙元宇宙
- 深入淺出 Server-sent events 技術Server
- 一文深入理解快照技術
- 深入淺出解讀 Java 虛擬機器的差別測試技術Java虛擬機
- 學術乾貨|深入淺出解讀 Java 虛擬機器的差別測試技術Java虛擬機