軟件調(diào)試的藝術(shù)

出版時間:2009-11  出版社:人民郵電出版社  作者:Norman Matloff,Peter Jay Salzman  頁數(shù):216  字?jǐn)?shù):337000  譯者:張?jiān)?nbsp; 
Tag標(biāo)簽:無  

前言

“嘿,還真不錯呢!”我們的學(xué)生Andrew首次認(rèn)真使用調(diào)試工具后驚嘆道。Andrew三年前在大一上編程課時就學(xué)過了調(diào)試工具,不過那時他只是將調(diào)試工具當(dāng)做應(yīng)付期末考試的內(nèi)容來打發(fā)的。現(xiàn)在他已經(jīng)大四了,教授強(qiáng)烈要求他停止采用輸出語句進(jìn)行調(diào)試的方法,改為使用正式調(diào)試工具。讓Andrew喜出望外的是,他發(fā)現(xiàn)使用恰當(dāng)?shù)墓ぞ呖梢源蟠罂s短調(diào)試時間。如今,在學(xué)生及已參加工作的程序員中,還有不少“Andrew”,但愿本書能幫助“Andrew們”發(fā)現(xiàn)調(diào)試工具的好處。但是,我們更希望本書能幫助那些已經(jīng)使用了調(diào)試工具,但還無法確定在什么情況下該做什么事的程序員做出適當(dāng)?shù)呐袛?。本書也適用于打算進(jìn)一步學(xué)習(xí)調(diào)試工具及其幕后原理的人。 本書的編輯曾說過,很多調(diào)試知識以前都只是在圈子里口口相傳,沒有正式編著成書。本書將改變這一狀況。本書回答了下列問題。 如何調(diào)試線程代碼?為什么有時候斷點(diǎn)最終出現(xiàn)的位置與原來設(shè)置的位置略有偏差?GDB的until命令為什么有時會跳到意想不到的地方?如何巧妙使用DDD和Eclipse?在當(dāng)今普遍使用GUI的時代,像GDB這樣的基于文本的應(yīng)用程序還有價值嗎?為什么當(dāng)錯誤代碼超出數(shù)組邊界時不發(fā)生段錯誤?為什么要將我們的一個示例數(shù)據(jù)結(jié)構(gòu)命名為nsp?

內(nèi)容概要

  調(diào)試對于軟件的成敗至關(guān)重要,正確使用恰當(dāng)?shù)恼{(diào)試工具可以提高發(fā)現(xiàn)和改正錯誤的效率。本書詳細(xì)介紹了3種調(diào)試器,GDB用于逐行跟蹤程序、設(shè)置斷點(diǎn)、檢查變量以及查看特定時間程序的執(zhí)行情況,DDD是流行的GDB的GUI前端,而Eclipse提供完整的集成開發(fā)環(huán)境。書中不但配合實(shí)例討論了如何管理內(nèi)存、理解轉(zhuǎn)儲內(nèi)存、跟蹤程序找出錯誤等內(nèi)容,更涵蓋了其他同類書忽略的主題,例如線程、客戶/服務(wù)器、GUI和并行程序,以及如何躲開常見的調(diào)試陷阱。  本書適合各層次軟件開發(fā)人員、管理人員和測試人員閱讀。

作者簡介

馬特洛夫(Norman Matloff)美國加州大學(xué)戴維斯分校計(jì)算機(jī)科學(xué)教授,研究領(lǐng)域涉及并行處理(尤其是軟件分布式共享內(nèi)存)、計(jì)算
機(jī)通信網(wǎng)絡(luò)、數(shù)據(jù)安全及數(shù)學(xué)和應(yīng)用統(tǒng)計(jì)等。他編寫了很多開源軟件包。創(chuàng)作的在線教程也深受歡迎。

書籍目錄

第1章 預(yù)備知識 1.1 本書使用的調(diào)試工具 1.2 編程語言 1.3 調(diào)試的原則  1.3.1 調(diào)試的本質(zhì):確認(rèn)原則  1.3.2 調(diào)試工具對于確認(rèn)原則的價值所在  1.3.3 其他調(diào)試原則 1.4 對比基于文本的調(diào)試工具與基于GUI的調(diào)試工具,兩者之間的折中方案  1.4.1 簡要比較界面  1.4.2 折中方法 1.5 主要調(diào)試器操作  1.5.1 單步調(diào)試源代碼  1.5.2 檢查變量  1.5.3 在GDB、DDD和Eclipse中設(shè)置監(jiān)視點(diǎn)以應(yīng)對變量值的改變  1.5.4 上下移動調(diào)用?!?.6 聯(lián)機(jī)幫助 1.7 初涉調(diào)試會話  1.7.1 GDB方法  1.7.2 同樣的會話在DDD中的情況  1.7.3 Eclipse中的會話 1.8 啟動文件的使用第2章 停下來環(huán)顧程序 2.1 暫停機(jī)制 2.2 斷點(diǎn)概述 2.3 跟蹤斷點(diǎn)  2.3.1 GDB中的斷點(diǎn)列表  2.3.2 DDD中的斷點(diǎn)列表  2.3.3 Eclipse中的斷點(diǎn)列表 2.4 設(shè)置斷點(diǎn)  2.4.1 在GDB中設(shè)置斷點(diǎn)  2.4.2 在DDD中設(shè)置斷點(diǎn)  2.4.3 在Eclipse中設(shè)置斷點(diǎn) 2.5 展開GDB示例 2.6 斷點(diǎn)的持久性 2.7 刪除和禁用斷點(diǎn)  2.7.1 在GDB中刪除斷點(diǎn)  2.7.2 在GDB中禁用斷點(diǎn)  2.7.3 在DDD中刪除和禁用斷點(diǎn)  2.7.4 在Eclipse中刪除和禁用斷點(diǎn)  2.7.5 在DDD中“移動”斷點(diǎn)  2.7.6 DDD中的Undo/Redo斷點(diǎn)動作 2.8 進(jìn)一步介紹瀏覽斷點(diǎn)屬性  2.8.1 GDB  2.8.2 DDD  2.8.3 Eclipse 2.9 恢復(fù)執(zhí)行  2.9.1 在GDB中  2.9.2 在DDD中  2.9.3 在Eclipse中 2.10 條件斷點(diǎn)  2.10.1 GDB  2.10.2 DDD  2.10.3 Eclipse 2.11 斷點(diǎn)命令列表 2.12 監(jiān)視點(diǎn)  2.12.1 設(shè)置監(jiān)視點(diǎn)  2.12.2 表達(dá)式第3章 檢查和設(shè)置變量 ……第4章 程序崩潰處理第5章 多活動上下文中的調(diào)試第6章 特殊主題第7章 其他工具第8章 對其他語言使用GDB/DDD/Eclipse

章節(jié)摘錄

插圖:1.3.1調(diào)試的本質(zhì):確認(rèn)原則下面的規(guī)則是調(diào)試的本質(zhì)?!ご_認(rèn)的基本原則修正充滿錯誤的程序,就是逐個確認(rèn),你自認(rèn)為正確的許多事情所對應(yīng)的代碼確實(shí)是正確的。當(dāng)你發(fā)現(xiàn)其中某個假設(shè)不成立時,就表示已經(jīng)找到了關(guān)于程序錯誤所在位置(可能并不是準(zhǔn)確的位置)的線索。換一種表達(dá)方式來說:驚訝是好事!當(dāng)你認(rèn)為關(guān)于程序的某件事情是正確的,而在確認(rèn)它的過程中卻失敗了,你就會感到驚訝。但這種驚訝是好事,因?yàn)檫@種發(fā)現(xiàn)會引導(dǎo)你找到程序錯誤所在的位置。1.3.2調(diào)試工具對于確認(rèn)原則的價值所在傳統(tǒng)的調(diào)試技術(shù)只是向程序中添加跟蹤代碼以在程序執(zhí)行時輸出變量的值,例如使用printf()或COIlt語句輸出變量的值。你可能會問:“這樣操作夠嗎?為什么要使用GDB、DDD或Eclipse這樣的調(diào)試工具?”首先,這種方法要求有策略地持續(xù)添加跟蹤代碼,重新編譯程序,運(yùn)行程序并分析跟蹤代碼的輸出,在修正程序錯誤之后刪除跟蹤代碼,并且針對發(fā)現(xiàn)的每個新的程序錯誤重復(fù)上述這些步驟。這種工作過程非常耗時,并且容易令人疲勞。最為重要的是,這些操作將你的注意力從實(shí)際任務(wù)轉(zhuǎn)移開,并且降低了集中精力查找程序錯誤所需的推理過程的能力。相反,通過使甩DDD和Eclipse這樣的圖形調(diào)試工具,只需要將鼠標(biāo)指針移動到代碼顯示中的變量實(shí)例上方就可以檢查該變量的值,并且此時會顯示該變量的當(dāng)前值。為什么還要在整夜的調(diào)試中使用printf()語句來輸出變量的值,使自己更加疲勞,等待更長的時間呢?放松心情,使用調(diào)試工具可以減少所花費(fèi)的時間和需要忍受的厭煩感。

媒體關(guān)注與評論

“Linux/Unix平臺的C程序員將從本書中獲益最多,其他平臺上的開發(fā)者也能從中學(xué)到寶貴的調(diào)試技術(shù)和秘訣?!?  ——D. Spinellis,Jolt獎獲獎圖書《高質(zhì)量程序設(shè)計(jì)藝術(shù)》作者“本書是一部軟件調(diào)試杰作,可以大大提升你的調(diào)試技術(shù)水平……所有編程入門課程都應(yīng)該講授其中的核心內(nèi)容。我強(qiáng)烈推薦本書!”  ——Amazon讀者評論

編輯推薦

《軟件調(diào)試的藝術(shù)》:調(diào)試對軟件開發(fā)至關(guān)重要。然而,即使對于有經(jīng)驗(yàn)的程序員,調(diào)試也并非易事?!盾浖{(diào)試的藝術(shù)》是一部優(yōu)秀的軟件調(diào)試入門著作,對業(yè)界多年口口相傳的調(diào)試經(jīng)驗(yàn)做了很好的總結(jié)。書中通過豐富的C/C++實(shí)例,生動闡述了適用于各種平臺與編程語言的通用調(diào)試原則、基礎(chǔ)知識、經(jīng)驗(yàn)技巧和相關(guān)的背景知識,詳細(xì)講解了Linux/Unix平臺最受歡迎的三個調(diào)試工具——GDB、DDD和Eclipse,并討論了網(wǎng)絡(luò)、多線程、GUI和多核程序的調(diào)試等高級主題。不僅如此,書中還講述了如何在調(diào)試中運(yùn)用vim、gcc、errno和lint等工具,以及Java、Python、Perl和匯編等程序的調(diào)試。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    軟件調(diào)試的藝術(shù) PDF格式下載


用戶評論 (總計(jì)27條)

 
 

  •   書已經(jīng)都讀完了。非常適合對gdb有一定基礎(chǔ)后想深一步了解的同學(xué)學(xué)習(xí)。我們的軟件調(diào)試中;書上講的所有內(nèi)容都用得上幾乎。非常好。結(jié)構(gòu)體變量,結(jié)構(gòu)體指針內(nèi)容顯示,GUI,多線程,網(wǎng)絡(luò)編程調(diào)試,core文件的分析利用等。
  •   唯一一本介紹調(diào)試unix系統(tǒng)編程的書,適用c語言。linux環(huán)境的c語言開發(fā)調(diào)試。
  •   簡單實(shí)用,彌補(bǔ)了調(diào)試方面的空白。相當(dāng)初,在學(xué)校幾十萬冊書的圖書館里找不到幾本像樣的介紹調(diào)試的書,國內(nèi)的高校教育已經(jīng)各種教程都忽視了程序調(diào)試的教學(xué),所以很多人浪費(fèi)了很多時間在折騰代碼。學(xué)會調(diào)試會節(jié)省很多不必要的犯錯時間??吹降木唾I吧,值得擁有。
  •   講的挺好的,適合調(diào)試入門
  •   比較適合linux編程的初學(xué)者!但是最好是數(shù)據(jù)結(jié)構(gòu)和c++開發(fā)功底比較扎實(shí)的,因?yàn)榕e的例子都是數(shù)據(jù)結(jié)構(gòu)里面的??傮w來看,看完第一章就能收獲很多,后面講了一部分內(nèi)部技術(shù)實(shí)現(xiàn),可以幫助深入理解,非常不錯噢!
  •   書挺好的 是一本提高經(jīng)驗(yàn)的書~~
  •   內(nèi)容不多,但是“正確”而且“有用”,是難得的入門書
  •   書還不錯,講的挺細(xì)的
  •   粗淺的講了講使用gdb、ddd和eclipse來調(diào)試,感覺還不錯
  •   值得想學(xué)習(xí)GDB,又不愿意閱讀幫助的購買。

    這本書可以回答如下問題:
    1)軟件調(diào)試器是什么,一般有什么功能
    2)GDB的主要功能,以及一些外掛的GUI。
    3)使用GDB的高級功能。比如我學(xué)到的為斷點(diǎn)促發(fā)后,通過***mands 輸出關(guān)心的信息,然后continue 繼續(xù)執(zhí)行,適用于動態(tài)捕獲程序運(yùn)行狀態(tài)。

    閱讀后很認(rèn)真的做了讀書筆記(freemind)。想要的給我聯(lián)系。

    這本書沒有解釋GDB的工作原理,比如為什么-d 編譯出來的文件很大,包含什么內(nèi)容,編譯的程序怎么和代碼關(guān)聯(lián)的?
    參閱《深入理解計(jì)算機(jī)系統(tǒng)》
  •   也許我是調(diào)試底子太弱的原因,這本書我覺得很好。
  •   調(diào)試的好幫手。
  •   買來之后,狂啃一通,個人感覺這是一本很不錯的入門書籍。盡管有些地方,翻譯的不是很好,但是不傷大雅。對于喜歡在linux/unix下編程的朋友,這一本書很有用。
  •   無論是開發(fā)人員還是測試人員,都應(yīng)該讀的一本書,對提高自身技能有很大幫助。
  •   1、翻譯的水平不咋地,好像不是計(jì)算機(jī)出生2、內(nèi)容一般般,還不如多看看gdb的手冊,不過中文參考資料實(shí)在是少
  •   很沒內(nèi)容的一本書 覺得買虧了
  •   很不錯的一本書,對于linux調(diào)試的基本技術(shù)講解的簡單易懂
  •   作為工具書來說內(nèi)容太瘦。
  •   挺好的一本書,可以當(dāng)作資料書,用的時候,查一下
  •   不夠深入,不過很適合初學(xué)者
  •   也許沒有調(diào)試工具 你也一樣可以 用輸出語句來協(xié)助調(diào)試, 我以前就是這樣做的在程序上到處都寫上printf().可是用上調(diào)試工具 真的是事半功倍, 現(xiàn)如今社會, 敏捷開發(fā), 效率才是王道.
  •   大部分內(nèi)容都是介紹怎么使用GDB,實(shí)例不是很多,讓人感覺不到是一種寓教于樂的感覺。
  •   這樣才名副其實(shí),書本身還行,GDB入門的人可以看看,對用慣了GDB的老手的價值就不是那么大了。
  •   對工作和學(xué)習(xí)幫助很大,里面的東西很實(shí)用,也很全面
  •   適合Linux程序員,書還是不錯的,我還在研究中!
  •   作為入門還行,工作幾年的人不太實(shí)用了
  •   昨天剛下的單,今天上午九點(diǎn)送貨員就送過來了!速度很快!書還沒有來的及看,不過包裝很精美!對內(nèi)容應(yīng)該不會失望的~
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7