找到問題根源——評《Windows高階除錯》

依舊伊利丹發表於2010-03-05

除錯,是通過嘗試執行程式找到問題根源的過程。這和測試不同,測試是發現問題的過程,但不深究問題產生的位置、原因。除錯是開發人員必須具備的能力,即便是在分工很細緻的大企業中——設計、開發、測試往往由不同的工程師完成——除錯這項工作卻常常(甚至是必須)由開發人員自己進行。

除錯有兩個層面,一種是基本除錯,是我們每天都在接觸的。通常,一個完善的整合開發環境通常都自帶有偵錯程式;而如今開發人員的開發習慣,也是寫完一段語法完整的程式碼後就順手啟動偵錯程式除錯一下。這類除錯通常是特定語言的、原始碼級別的、使用者態的,對於上層的邏輯錯誤通常是足夠的;但如果遇到更深層次的問題,僅僅通過基本除錯就無能為力了。

另一種是高階除錯,這種除錯通常使用獨立的偵錯程式(未與開發環境整合),並能脫離原始碼進行除錯;甚至可以除錯作業系統的底層問題(核心除錯)。高階除錯並不是開發人員所必需具備的能力(甚至很多開發人員並不熟練掌握高階除錯),但掌握高階除錯可以大幅提高自身功力,對於開發技術的進階是必不可少的。

《Windows高階除錯》(以下簡稱《AWD》)一書正是講解如何在Windows作業系統上進行高階除錯的。其實“高階除錯”不過是“另一種除錯方法”而已,它也有自己的入門、進階、精通等程度。而《AWD》一書,在老劉看來應該是屬於“入門”和“進階”這兩個級別的,特別適合於掌握了一定的開發技術和基本除錯技術,想學習高階除錯的朋友。

《AWD》分為三部分,第一部分主要介紹高階除錯應具備的基本工具,包括偵錯程式和符號檔案等。雖然在第一章中介紹了很多種偵錯程式,但整本書用得最多的還是windbg.exe。

第二部分則從實踐的角度介紹了多種除錯場景,如記憶體、資源、程式間通訊和同步等。這一部分是整本書的核心,細讀下來不僅能掌握高階除錯的基本方法,還能對作業系統原理有更加深刻的掌握。

第三部分則是高階除錯中的高階主題,這一部分內容對於大多數開發人員來說可能並不是必須的,甚至日常工作根本用不到。但對於對除錯技術非常著迷的朋友,或者是系統開發者,這部分卻是必不可少的。正如Raymond McCollum所說,大多數書籍在涉及到如此高階的主題時,往往“留給讀者練習”或“請參閱其他高階參考書”,而本書則屬於那些“高階參考書”。

前面提到本書屬於“入門”和“進階”的級別,並非看輕此書。高階除錯技術本身就是相對複雜的,但本書卻沒有故弄玄虛,而是從多種常見的除錯場景入手,介紹如何使用偵錯程式來完成特定的除錯任務。這樣新進入除錯領域的開發者就能很快地上手,實際感受到除錯的快感和樂趣。而即便是經常使用偵錯程式的熟手,也可以將本書作為參考,快速查詢各種場景中的除錯命令。

《AWD》一書的遺憾在於,並沒有非常詳盡地介紹每種偵錯程式,所以讀者朋友不得不“參與其他文章或書籍”來掌握各種偵錯程式的基本操作。當然,如果不是這樣的話,您手中的書可就不是500餘頁這麼簡單了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15783504/viewspace-628688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章