官术网_书友最值得收藏!

譯者序

十幾年前,我看過Spinellis先生所寫的《代碼閱讀》(Code Reading)和《代碼質(zhì)量》(Code Quality)兩本書,特別喜歡這種全面講解編程工作中某個領(lǐng)域的教程,這次又讀到同一位作者所寫的《Effective Debugging》,感覺依然很精彩。

這是一本在思路和技巧上都較為豐富的調(diào)試手冊。

從思路方面來說,本書介紹了許多宏觀與微觀的調(diào)試辦法。例如,在面對軟件故障時,既可以從整體情況入手,進(jìn)行自上而下的調(diào)試,也可以從具體故障入手,進(jìn)行自下而上的調(diào)試,還可以考慮用高級的抽象機(jī)制、便捷的程序庫、直白的算法、簡潔的邏輯,乃至另外一門更為合適的編程語言,對bug繁多的代碼進(jìn)行改寫——這些思路,都能在調(diào)試工作中給人以啟發(fā)。

從技巧方面來說,本書介紹了眾多的調(diào)試工具與手法:有些可以在程序運行之前,設(shè)置斷點并對表達(dá)式與程序的狀態(tài)做出斷言;有些可以在程序運行之中,將各種調(diào)試機(jī)制與程序進(jìn)行連接,并對其執(zhí)行情況進(jìn)行記錄;有些則可以在程序崩潰之后,通過核心轉(zhuǎn)儲等信息來還原當(dāng)時的情境。此外,作者還講解了如何把這些前置、中置和后置技巧與版本控制系統(tǒng)、靜態(tài)分析工具、動態(tài)分析工具及性能測評工具結(jié)合起來使用,以提升調(diào)試的效率。

全書的8個大類中含有66條技巧,這些技巧都是圍繞著“重現(xiàn)bug——探查bug——解決bug”這一主線而展開的。針對這三個階段,作者進(jìn)行了詳細(xì)的分步講解,給出了很多實用的范例代碼與建議,而且特別強調(diào)了如何才能穩(wěn)定地捕獲并重現(xiàn)bug,以便給后面兩個階段打下良好的基礎(chǔ)。

本書或許還能促使大家思考另外一個問題,那就是:在修復(fù)完bug之后,怎樣防止有人向程序中引入類似的bug?這可以從代碼質(zhì)量與測試兩方面入手。提高代碼質(zhì)量,能夠減少程序員對代碼的誤解,進(jìn)而降低引入bug的概率;而對測試進(jìn)行完善,則能夠提前捕獲很多問題,從而不會使這些問題逐漸積累成復(fù)雜的bug。這些理念,作者在書中也時常會提到。

總之,這是一本可以打開思路并拓寬眼界的書籍,大家不妨在自己慣用的調(diào)試環(huán)境之外,多嘗試一下作者所介紹的其他技法、工具和語言,以求達(dá)到舊學(xué)與新知的融合。

翻譯本書的過程中,我得到了機(jī)械工業(yè)出版社華章公司諸位編輯和工作人員的幫助,在此深表謝意。

由于譯者水平有限,不足與疏漏之處請大家發(fā)郵件至eastarstormlee@gmail.com,或訪問github.com/jeffreybaoshenlee/debugging-errata/issues留言,給我以批評和指教。

愛飛翔

主站蜘蛛池模板: 蕉岭县| 汾西县| 怀仁县| 长治县| 鹿邑县| 临夏县| 博湖县| 潼南县| 华蓥市| 梧州市| 双峰县| 宁国市| 宜兴市| 阿巴嘎旗| 固阳县| 甘孜| 遂溪县| 盱眙县| 盐池县| 怀宁县| 高碑店市| 黑河市| 河南省| 玉龙| 沂源县| 旬邑县| 通辽市| 永嘉县| 琼海市| 博白县| 礼泉县| 芮城县| 阳谷县| 军事| 徐汇区| 洛阳市| 宿迁市| 义乌市| 聊城市| 沂源县| 栖霞市|