• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何有效地調試軟件

    發表于:2016-07-11來源:infoq作者:Ben Linders點擊數: 標簽:調試
    Diomidis Spinellis是《代碼閱讀與代碼質量》一書的作者。在GOTO阿姆斯特丹2016大會上,他就如何有效地調試軟件和預防錯誤做了演講。

      Diomidis Spinellis是《代碼閱讀與代碼質量》一書的作者。在GOTO阿姆斯特丹2016大會上,他就如何有效地調試軟件和預防錯誤做了演講。

      InfoQ采訪了Spinellis,內容涉及發現和修復軟件中的錯誤、軟件調試的原則、如何提高調試效率、如何編寫出不怎么需要調試的代碼以及管理人員如何為錯誤預防和處理提供支持。

      InfoQ:是什么讓軟件錯誤的發現和修復如此困難?

      Diomidis Spinellis:如果你認為編寫代碼困難,那就嘗試下代碼調試吧。你編寫了一個新的函數或方法,并加上一些語句形成某個只是貌似正確的東西。當你調試一個程序的時候,你要面對數千或數百萬行貌似正確的代碼,并設法找出其中的錯誤。這必定要困難許多。然后,你還要應對各種系統和層次之間的復雜交互、每秒執行數十億次的CPU指令、難以再現的Bug以及來自生產環境系統的壓力。

      而且,課堂上很少教調試;從一切可能出錯的東西辛苦得來的經驗很難壓縮到一次演講中。此外,由于系統失敗的方式各不相同,你必須不斷地改進和調整你所用的工具和方法。你可以從觀察開始,繼之以數據分析,然后做一些試驗,最后推斷出Bug的原因。沒有什么標準的初學者技能。

      InfoQ:軟件調試有什么一般原則嗎?

      Spinellis:很遺憾,由于軟件會出現各種難以想象的錯誤情況,我不認為有什么可以在軟件調試過程中遵循的一般原則。退而求其次,我歸納出了三大類方法:

      高級策略,比如由故障特征推斷出原因,或者確保某些代碼滿足了其前提條件;

      方法和實踐,比如確保Bug可以有效地再現,或者著重突出故障的影響;

      通用工具,比如Unix命令行工具、跟蹤(考慮下strace、dtrace和systemtap)工具和版本控制系統。

      InfoQ:程序員做什么能夠提高調試效率?

      Spinellis:首先要為調試成功做好準備。讓自己相信問題將會得到解決,留出足夠的時間用于調試,不要分心,要堅持不懈,必要的時候,留待第二天解決。重要的是,要不斷地在環境、工具和知識上投入。購買高效工作所需的軟件和硬件。例如,如果軟件生成大量的調試日志文件,你就應該有足夠的磁盤空間、CPU處理能力和帶寬,以便可以高效地處理它們。在調試的過程中,你很容易遇到千奇百怪的問題,因此,花些精力管理和優化自己的環境和工具配置。這包括按鍵綁定、別名、輔助腳本、快捷方式和工具配置;所有這些都可以顯著地提高調試生產力。

      InfoQ:有什么技術或方法可以編寫出不怎么需要調試的代碼嗎?

      Spinellis:當然!編寫可維護的代碼——可讀、穩定、易于分析和修改的代碼——帶來的Bug也比較少。此外,像單元測試、代碼審查這樣的方法以及使用斷言都有助于最小化進入生產環境的錯誤。

      在設計時使用高級抽象(例如使用一個框架的算法或容器數據結構,而不是選擇自己開發一種方案)可以減少代碼和錯誤。另外,讓程序易于調試也很重要。這包括為詳細地記錄日志提供便利,當出現內部錯誤時報告豐富的上下文信息,并將問題及崩潰的詳細信息發送到一個中央存儲庫。

      InfoQ:管理人員如何為組織里的錯誤預防和處理提供支持?

      Spinellis:設定基本的過程有助于確保軟件錯誤不會失控。部署并采用一個問題跟蹤系統,用它把要處理的問題分類并排定優先級。將軟件變更恰當地記錄在進一個運作良好的版本管理系統里,并將它與問題跟蹤系統聯系起來;我經常僅僅通過仔細研究一個文件的歷史和變更就修復了Bug。在軟件建設方面,推廣單元測試的應用,把軟件的構建性能分析、靜態分析和動態分析包含進來,并維護一個快速、精益、均衡的構建- 測試周期。這有助于幫助開發人員盡早捕獲Bug,并迅速修復。最后,在運維方面,逐步部署軟件,允許新舊版本對比,努力確保所使用的工具和所部署的環境的多樣性,并有組織地升級工具和庫。

      GOTO阿姆斯特丹2016大會將于6月14日-15日舉行。這是一個由從業者推動的企業級軟件開發大會,面向團隊負責人、架構師和項目管理人員。InfoQ將以Q&A、概述、文章的形式進行報道。

      Diomidis Spinellis是雅典經濟與商業大學的一名教授,同時也是IEEE Software的總編輯以及《代碼閱讀與代碼質量》一書的作者。他的新書Effective Debugging: 66 Specific Ways to Debug Software and Systems將在2016年6月1日發行。

    原文轉自:http://www.infoq.com/cn/news/2016/06/effectively-debug-software

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>