出版時(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)分、閱讀與下載