- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
当开发软体或理系统时,你通常会遇到问题。这包括可以立
前言
當開發軟體或管理系統時,你通常會遇到問題。這包括可以立即解決的程式
編譯錯誤到導致每小時數百萬(各種幣值)損失的大規模系統當機。無論是
哪一種,身為高效專家的你必須能夠快速的找出問題來源並加以解決。這就
是除錯工作,也是本書的主題。
這本書的對象是有經驗的開發者。這不是入門簡介,因此會假設你能夠理解
各種程式設計語言的範例以及使用GUI 與命令列程式設計工具。另一方面,
本書有詳細的模式除錯技巧,因為我發現在某些領域中有經驗的開發者也會
需要逐步的引導。此外,若你除錯的對象規模較大,你會發現本書的進階內
容很管用。
除錯由用於開發與操作複雜運算系統時處理各種問題的策略、工具與方法組
成。在過去,除錯主要是指檢測與修正程式的錯誤;但現今的程式很少獨立
運作。就算最小的程式也會(動態的)引用外部函式庫。複雜的程式在應用
程式伺服器上執行、呼叫網路服務、使用關聯式與NoSQL 資料庫、從目錄
伺服器取得資料、執行外部程式、運用中介軟體以及各種第三方套件。完整
的系統與服務運作依靠內部開發功能與分佈世界各地的主機上執行的第三方
元件。DevOps 這個軟體開發規範處理這種現實,並強調開發者與其他IT 專
家的角色。本書希望幫助你在面對問題時具有類似的觀點,因為最困難的挑
戰是無法立即找出發生問題的軟體元件。
內容安排從一般主題進行到特定主題,從策略(第1 章)、方法(第2 章)、
以及工具與技巧(第3 章)等各種軟體與系統除錯開始。然後討論除錯工作
xiii
進行時可套用的特定策略技巧:使用除錯工具(第4 章)、程式設計(第5
章)、編譯軟體(第6 章)與執行系統(第7 章)等各種時機。獨立的一章
(第8 章)討論處理多執行緒與並行程式刁鑽錯誤的特定工具與技巧。
讀一頁,讀下一頁,翻頁繼續,直到讀完為止。等一下!還有更好的方法。
本書的內容可分為三種類型:
,供面對問題時運用。這包括第1 章“高階策略"與第2 章
“通用方法與實踐"。此外,許多放在第5 章“程式設計技巧"的技巧也
屬於這一類。閱讀並理解這些內容,加以套用以讓它們最終成為一種習
慣。除錯時,系統化的反映你使用的方法。走到死巷子時,記得你已經
探索過的路徑能夠幫你找出離開迷宮的方向。
,可加以學習。這部分主要涵蓋在第3 章“通用工具與技
巧",但還要一些可在面對每天都會遇到的問題時能夠套用的元素;例
如作法36 :“調校你的除錯工具"。花時間學習並最終實踐這些內容。
這或許表示放棄你已經熟悉的工具以克服高階工具的學習曲線,一開始
可能很吃力,但長期下來會讓你成為一門專家。
,遇到麻煩時可以放出。這些不是你例行使用的東西,但可以在遇
到困難時救你(至少節省一些時間)。舉例來說,如果你不知道你的C
與C++ 程式為何編譯失敗,見作法50 :“檢視產生的程式碼"。仔細研
讀並於遇到時使出。
雖然本書內容提供偵測失敗與除錯的建議,但你也可以套用它們以減少錯誤
來讓日子好過一點。嚴格的除錯與軟體開發實踐互相幫助形成良性循環。此
建議涵蓋你(現在與未來)在軟體建構、設計與管理中扮演的角色。
軟體時,實踐下列招式:
使用適合角色的最高層級機制(作法47 :“以其他語言重寫可疑的程
式"與作法66 :“以高階抽象重寫程式")
xiv
提供除錯模式(作法6 :“使用軟體的除錯設施"與作法40 :“加入除錯
功能")
提供監控與記錄系統操作的機制(作法27 :“使用系統的獨立行程監控
工具"、作法41 :“加入日誌記錄陳述"與作法56 :“檢視應用程式日誌
檔案")
引入選項以使用Unix 命令列工具設計元件腳本(作法22 :“以Unix 命
令列工具分析除錯資料")
讓內部錯誤產生可見失敗而非不穩定(作法55 :“盡快失敗")
提供取得記憶體傾印的方法(作法35 :“認識如何使用
文档评论(0)