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

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

前言

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

內(nèi)容概要

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

作者簡(jiǎn)介

馬特洛夫(Norman Matloff)美國(guó)加州大學(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ù)備知識(shí) 1.1 本書使用的調(diào)試工具 1.2 編程語(yǔ)言 1.3 調(diào)試的原則  1.3.1 調(diào)試的本質(zhì):確認(rèn)原則  1.3.2 調(diào)試工具對(duì)于確認(rèn)原則的價(jià)值所在  1.3.3 其他調(diào)試原則 1.4 對(duì)比基于文本的調(diào)試工具與基于GUI的調(diào)試工具,兩者之間的折中方案  1.4.1 簡(jiǎn)要比較界面  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)對(duì)變量值的改變  1.5.4 上下移動(dòng)調(diào)用棧 1.6 聯(lián)機(jī)幫助 1.7 初涉調(diào)試會(huì)話  1.7.1 GDB方法  1.7.2 同樣的會(huì)話在DDD中的情況  1.7.3 Eclipse中的會(huì)話 1.8 啟動(dòng)文件的使用第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中“移動(dòng)”斷點(diǎn)  2.7.6 DDD中的Undo/Redo斷點(diǎn)動(dòng)作 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章 多活動(dòng)上下文中的調(diào)試第6章 特殊主題第7章 其他工具第8章 對(duì)其他語(yǔ)言使用GDB/DDD/Eclipse

章節(jié)摘錄

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

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

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

編輯推薦

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

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


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


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

 
 

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

    這本書可以回答如下問題:
    1)軟件調(diào)試器是什么,一般有什么功能
    2)GDB的主要功能,以及一些外掛的GUI。
    3)使用GDB的高級(jí)功能。比如我學(xué)到的為斷點(diǎn)促發(fā)后,通過***mands 輸出關(guān)心的信息,然后continue 繼續(xù)執(zhí)行,適用于動(dòng)態(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)試的好幫手。
  •   買來之后,狂啃一通,個(gè)人感覺這是一本很不錯(cuò)的入門書籍。盡管有些地方,翻譯的不是很好,但是不傷大雅。對(duì)于喜歡在linux/unix下編程的朋友,這一本書很有用。
  •   無論是開發(fā)人員還是測(cè)試人員,都應(yīng)該讀的一本書,對(duì)提高自身技能有很大幫助。
  •   1、翻譯的水平不咋地,好像不是計(jì)算機(jī)出生2、內(nèi)容一般般,還不如多看看gdb的手冊(cè),不過中文參考資料實(shí)在是少
  •   很沒內(nèi)容的一本書 覺得買虧了
  •   很不錯(cuò)的一本書,對(duì)于linux調(diào)試的基本技術(shù)講解的簡(jiǎn)單易懂
  •   作為工具書來說內(nèi)容太瘦。
  •   挺好的一本書,可以當(dāng)作資料書,用的時(shí)候,查一下
  •   不夠深入,不過很適合初學(xué)者
  •   也許沒有調(diào)試工具 你也一樣可以 用輸出語(yǔ)句來協(xié)助調(diào)試, 我以前就是這樣做的在程序上到處都寫上printf().可是用上調(diào)試工具 真的是事半功倍, 現(xiàn)如今社會(huì), 敏捷開發(fā), 效率才是王道.
  •   大部分內(nèi)容都是介紹怎么使用GDB,實(shí)例不是很多,讓人感覺不到是一種寓教于樂的感覺。
  •   這樣才名副其實(shí),書本身還行,GDB入門的人可以看看,對(duì)用慣了GDB的老手的價(jià)值就不是那么大了。
  •   對(duì)工作和學(xué)習(xí)幫助很大,里面的東西很實(shí)用,也很全面
  •   適合Linux程序員,書還是不錯(cuò)的,我還在研究中!
  •   作為入門還行,工作幾年的人不太實(shí)用了
  •   昨天剛下的單,今天上午九點(diǎn)送貨員就送過來了!速度很快!書還沒有來的及看,不過包裝很精美!對(duì)內(nèi)容應(yīng)該不會(huì)失望的~
 

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

京ICP備13047387號(hào)-7