深入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除錯過程不必是一場噩夢。您只需要具有創新的心態並使用正確的工具即可。退出功能就是這樣一種工具,可以幫助開發人員加快除錯過程。它旨在幫助您以更高的置信度,速度和準確性來識別,診斷和解決程式碼中的錯誤。
相關文章
- Bochs 除錯技術(轉)除錯
- 《除錯九法》:除錯是個技術活除錯
- Web除錯技術詳解Web除錯
- iOS無線除錯技術iOS除錯
- 掌握 Linux 除錯技術Linux除錯
- Qt入門(10)——除錯技術QT除錯
- 掌握 Linux 除錯技術(轉)Linux除錯
- 掌握Linux除錯技術(轉)Linux除錯
- Linux技術——gdb除錯基礎Linux除錯
- 深入分析java web技術內幕JavaWeb
- 嵌入式Linux的除錯技術Linux除錯
- vc6.0程式除錯技術總結除錯
- 加殼技術--DRx解碼阻止除錯除錯
- Java除錯Java除錯
- Windows 反除錯技術——OpenProcess 許可權過濾Windows除錯
- 五種前端開發必備的除錯技術前端除錯
- Java序列化技術即將被廢除!!!Java
- 深入分析Java Web技術內幕(修訂版)JavaWeb
- 一個不錯的綜合技術(java,oracle…………)JavaOracle
- Java除錯教程--多執行緒除錯(轉)Java除錯執行緒
- 深入分析 Java Web 技術內幕讀後總結JavaWeb
- 深入理解Android逆向除錯原理Android除錯
- 閃回刪除技術:
- Java除錯大法,來了~Java除錯
- Java除錯那點事Java除錯
- Ruby on Rails:開源技術將深入企業 - [Matrix - 與 Java 共舞]AIJava
- 深入理解冪等技術
- Android應用方法隱藏及反除錯技術淺析Android除錯
- 如何技術對接接入AG介面API產品(AG介面除錯)API除錯
- 【同行說技術】Python開發、除錯、爬蟲類工具 大全Python除錯爬蟲
- 程式設計師深入發展不可錯過的10篇技術文章程式設計師
- java反射技術Java反射
- Java 模板技術Java
- java技術文章Java
- 《深入react技術棧》之表單React
- 深入理解零拷貝技術
- 深入React技術棧(1):簡介React
- 深入挖掘Windows指令碼技術(轉)Windows指令碼