在 .NET 開發這個領域中,開發者很難想像不透過 IDE 的情況下建立專案,建構在 IDE 上的進階除錯工具也越來越多。在這篇文章中,我們將簡單介紹該如何選擇除錯工具,以及現代化除錯工具應該具備哪些功能。



 ■     解應用程式發生什麼事情
這屬於除錯工具的基本功能:它必須詳加記錄發生了什麼問題 (如:Exception) 並列出錯誤訊息 (Warning/Error Message),開發人員才得以進行修復/修改程式代碼工作,維持系統功能完善。良好的 Debug Tools 應該提供清楚明瞭的資料,讓開發人員了解應用程式當下的情況。 

 ■     有效追蹤數值串流
有效的定位錯誤原因最重要的因素為何? 有經驗的開發人員會告訴您是了解程式代碼工作細節與程式如何執行是關鍵。若能重現 (reproduce) 歷史細節,將有效增加開發人員偵錯/除錯的效率。對於除錯工具的選擇策略,能重現當下資料數值是不可或缺的功能。

 ■     Production 環境偵錯/除錯
除錯工具可以分成兩種類型:開發階段鎖偵測的問題 與 Production 階段的發生的問題。支援 Production 環境偵錯/除錯工具相當重要,他能蒐集當下發生的實際訊息並重現,讓開發人員進行除錯。這是有可能的嗎? Reverse debugging tools 是有機會的。

 ■     如何融入 DevOps
    1. 開發階段:理所當然,除錯工具基本上要支持開發而建立的工具,它必須要協助開發人員包含:提示錯誤、發現原因與修正錯誤
    2. QA 環境:理想的除錯工具可以幫助測試人員列出詳細的錯誤清單,也提供受測環境的資料
    3. Operations:監控應用程式的健康程度是 DevOps 重要的功能之一,理想的偵錯工具可以協助監控 Production

 ■     是否支援所有類型的 .NET 應用程式
我們知道 .NET 延伸了大量的技術:包含 .NET、ASP.NET、ASP.NET Core、Xamarin、EF…等。倘若您選擇的偵錯/除錯工具無法支援多數技術,這會提升開發者的學習曲線 : 每學一門技術就得學一像工具,這對於團隊的生並不是好事。選擇能支援多數技術的工具,是您考慮的主要原因之一。

 ■     lambda functions 偵錯/除錯
雖然除錯工具相當多,但少數線上除錯工具可以在 lambda functions 內進行偵錯,這會是一個痛苦的過程。為什麼會這樣呢?其主要原因主要在於開發人員無法設定中斷點。故在選擇線上除錯/偵錯工具時,特殊情境偵錯/除錯,必然是您考慮的主要原因之一。

 ■     執行緒 偵錯/除錯
現代化的應用程式越來越複雜,其中執行緒相關的應用程式偵錯常常讓開發人員感到頭痛:多數情況下,要找到錯誤的主要原因有如大海撈針。除此之外,開發人員必須對系統有的完整理解。良好的除錯/偵錯工具將有助於檢查單一執行緒,幫助開發人員快速了解錯誤發生的主要原因。 RevDeBug 可以錄製內容,並提供單一執行緒執行過程中詳細的資訊。

 ■     偵錯/除錯 內容搜尋
除錯過程中總會有大量的資訊需要紀錄,透過人工逐一逐步執行偵錯,在某些情況下並不是很有效率,尤其是需要查看應用程式內變數值時,會讓開發人員感到頭痛。紀錄/錄製下偵錯與除錯過程中相關變數與資訊是不錯的方法,搭配搜尋引擎快速尋找 Bug 資訊,將會讓整個除錯流程更加得心應手。

 ■     分享問題給團隊
發現好的 solution 的方法其中之一就是分享自己的問題,與開發人員(團隊成員)進行討論。這種方式比自己思考與解決問題,更能發現不完善的地方,讓 solution 更加完善。 團隊合作的方式

 ■     更有彈性的偵錯
理所當然,越龐大且複雜的系統內使用偵錯工具,難保開發人員不會被大量訊息淹沒。或許你已經知道可能錯誤的程式範圍,而不需要完全的逐步偵錯。彈性的偵錯工具應該具備有過濾訊息與排除規則(如:黑名單與白名單),提供開發人員想看的內容,以加速除錯的效能。

 ■     偵錯工具在 production 應用?
致力於維持 production 的團隊一定會對這功能相當感興趣。在 production 上的錯誤處理速度越快,所造成的損失就越小,停機的時間就越短。 在不影響效能的情況下,這就是為什麼 production 的應用程序連接的除錯工具不僅應該檢測錯誤,還應該為您提供有關受影響的使用者數量以及發生錯誤次數、相關資訊,以幫助您確定應該解決的問題。


這些就是選擇除錯工具決定性的因素,因為本文能幫助您選擇除錯工具。倘若你有興趣,不妨可以嘗試 RevDuBug,它具備了上述所有要素,最重要的是可以免費試用