官术网_书友最值得收藏!

九、程序里的bug和debug

bug就是程序中出現(xiàn)的錯誤。那為什么叫bug呢?我們查了字典,bug的意思可是“臭蟲、小蟲子”??!包老師解開了我們的困惑。

原來在計算機剛問世的時候,它的內部是一個一個小燈泡(包老師說這叫電子管,見圖1-13左側部分)。有一次,這臺計算機運行出錯了,所有人都不知道是怎么回事。過了幾天,程序員Grace Hopper發(fā)現(xiàn)一個小燈泡里有只小飛蟲,把蟲子拿出來后,計算機就正常運行了(見圖1-14)。

040-1

圖1-13 早期計算機里用的電子管(左)和計算機程序里的第一個bug(右)

040-2

圖1-14 Grace Hopper工作照(源自https://en.wikipedia.org/wiki/Grace_Hopper

因為蟲子的英文是bug,所以后來當計算機出故障時,大家就說:“出bug了!出bug了!”圖1-13中右側圖片里的那只蟲子就是歷史上第一個“計算機里的bug”,旁邊還有Grace寫的注釋“First actual case of bug being found”。

在后面的每一講里,我們都會總結一下到底出了哪些bug,概括起來是以下幾種原因:馬虎、沒有初始化變量、循環(huán)邊界不正確、弄混了形式參數(shù)和實際參數(shù)。

出了bug怎么辦呢?那就進行debug吧。老師告訴我們,英文里面把單詞前面加上“de”表示“否定、去除”的意思。debug就是找到程序中的bug并改正它們。

那么怎樣進行debug呢?我覺得debug就像是“警察破案”,我們要從蛛絲馬跡中找出真相。我們總結了下面兩種方法。

(1)看

在開始debug之前,必須保證自己大腦中有一個清晰的程序執(zhí)行思路,順著思路仔細閱讀自己的代碼兩到三遍,也就是對照腦子里的思路和寫出的程序,看是否有不同,一定要仔細!

(2)執(zhí)行

有時候光看還不行,還需要執(zhí)行。在找到可疑的地方之后,嘗試修改一下,或者把這一段指令暫時移走,再次運行程序,看是否正常。

一個非常好的方法是“打印中間結果”,也就是設置一些用于調試的變量,把程序運行的中間過程都打印出來,看是不是按照我們的意圖運行的。

還有其他的一些進行debug的方法,都放到了這本書的輔助閱讀材料里,請讀者參考輔助閱讀材料吧。

主站蜘蛛池模板: 汕尾市| 泰顺县| 通化市| 宜良县| 堆龙德庆县| 驻马店市| 沙洋县| 革吉县| 察哈| 西昌市| 宜丰县| 富裕县| 胶州市| 施秉县| 镶黄旗| 澄城县| 荔浦县| 呼图壁县| 大城县| 通州市| 尉氏县| 探索| 瑞昌市| 阳朔县| 镶黄旗| 吴堡县| 丰镇市| 霍邱县| 台州市| 陈巴尔虎旗| 哈尔滨市| 武安市| 克拉玛依市| 灵山县| 固阳县| 化德县| 保德县| 江达县| 随州市| 晋宁县| 治多县|