<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    rosial

    lost memory
    數據加載中……

    《爪哇夜未眠》- 程序設計學習篇 - Debug

    ???? 吃燒餅不免會掉芝麻,寫程序不免會有 bug 。再怎么高明的程序員,也不敢保證寫出來的程序不會有 bug 。當發現程序有誤, bug 隱身其中時,就是 debugger 出動的時候了。越是高明的程序員,越是能夠靈巧地使用 debugger ,讓 bug 無所遁形。

    ?????? Debug 的過程分成兩個步驟:

    l???????? 找到 bug 所在地

    l???????? 修正 bug

    ????? 事實上,真正困難的地方在第一點,如果你能找到 bug 所在地,應該就知道怎么修正 bug 了。本文章簡單地介紹 debugger 的用法,希望你再次遇到 bug 時,能夠不慌不忙地把這些技巧派上用場。

    調整步伐

    ????? 最不花腦筋的 debug 方式就是:逐行執行,每執行一行程序代碼就暫停,立刻觀察這一行的執行結果是否如你所預期,沒問題的話就繼續執行下一行。

    ????? 當你在逐行執行的時候,如果遇到了 method invocation (方法調用),你可以選擇要跳進此 method 或者不跳進此 method 。欲跳進此 method ,就使用 step in ;欲一口氣執行完此 method ,就使用 step over 。至于要不要跳進去,你可以有自己的考量。一般來說,如果你認定該 method 應該不會有問題時,你就使用 step over ,否則使用 step in

    ????? 如果已經在某 method 內,但是認為此 method 后面的程序代碼不會有 bug ,你可以透過 step out 來往上跳,跳離開這個 method

    ????? 在 debug 的時候,前進的步伐很重要, step over step in step out 三者必須好好搭配使用,才不會“自亂陣腳”。


    控制疏密

    ????? 光靠上面三種 step 方式,要找到 bug ,就如同海底撈針一樣,并不容易。你還需要 breakpoint (斷點)的輔助。

    ????? 你應該先透過經驗來判斷, bug 最有可能出現在哪些地方。然后在這些地方的前后分別設定 breakpoint 。為了加快 debug 的速度,我們經常同時在程序中設定多個斷點。

    ????? 在 debug 模式下執行程序時,遇到斷點,程序就會暫停,我們可以利用這個機會檢視目前的執行結果是否符合預期,如果有差池的話,就表示剛才執行過的程序代碼有問題,你已經找到了 bug 的區域,立刻停止此次的 debug 執行模式。接著再重來一次,繼續縮小范圍。當范圍已經很小時,可以改用 step 的方式來找 bug

    分析觀察

    ????? 不管是肇因于 breakpoint step ,程序在 debug 模式下暫停時,我們都需要“觀察”( watch )程序目前的狀態( state ),據以判斷方才的執行過程有無錯誤。程序狀態其實就是數據的集合,所以我們的“觀察”對象就是程序中的變量值。 debug 工具可以讓我們很方便地觀察程序中各個變量的值,有些 debug 工具還可以讓我們輸入由變量組成的計算式( expression ),輸出計算結果以方便我們觀察。

    ????? 某些 debugger 甚至具有修改變量值的功能,可以讓你在程序暫停時,修改程序狀態,然后繼續執行。

    理清頭緒

    ????? 對于多線程( multi-thread )程序, debugger 依然能進行上述的 step breakpoint watch 。通常 debugger 會在 watch 窗口中以樹狀結構區分出線程,然后才個別列出各個線程的區域變量,以免混淆。

    ????? 為了因應撰寫 client/server 程序的需求,有些 debug 工具甚至可以同時幫助多個 process 進行除錯。

    隔空抓藥

    ????? “捎來藥丸的,可是白胡子的老公公?”我們姑且相信這個妖婦 [1] 的確具備隔空抓藥的本事,但提到這樣的本事,許多 debugger 也不多讓。越來越多的 debugger 開始支持 remote debugging ,讓程序員可以在一部 PC 上, debug 另一部 PC 上的程序。

    ????? 以 Java 來說,最早支持 remote debugging 的是 VisualCafe 。現在, Sun JVM 都支持 JVMDI Java VM Debug Interface )以及 JDWP Java Debug Wire Protocol ),所以想設計出一個能隔空抓藥的標準 remote debugger 也不難,主流的 Java 開發工具也開始支持 remote debugging

    de 程序中的 bug ,也 de 生活中的 bug

    ????? 我們除了 de 程序中的 bug ,也要 de 生活中的 bug (竊聽器也被稱做 bug )。軍政要人的座機可能被裝滿 bug ,美鳳姊姊的座車和手機內也被裝了 bug 。越是重要的人,周遭的 bug 就會越多,越是需要常常進行 debug

    ????? 如果無法確定生活中毫無 bug ,請各位務必要做最壞的打算,試圖干擾任何可能存在的 bug ,做法很簡單,例如:放大電視機音量、關燈,都很有效。那也就是為什么,我向親近好友坦承“關燈版”的男主角其實就是我,至今仍然沒有人相信的緣故。

    posted on 2006-07-03 14:45 rosial 閱讀(209) 評論(0)  編輯  收藏 所屬分類: 蔡學鏞

    主站蜘蛛池模板: 韩国日本好看电影免费看| 亚洲人成影院在线| 亚洲精品福利网泷泽萝拉| 伊人久久亚洲综合影院| 2020久久精品国产免费| 国产精品99精品久久免费| 美女被免费视频网站a| 亚洲中文无码永久免| 亚洲精品美女在线观看播放| 亚洲熟妇中文字幕五十中出| 亚洲成av人片天堂网老年人| 成年人免费观看视频网站| 日韩在线一区二区三区免费视频| 亚洲入口无毒网址你懂的| 亚洲国语精品自产拍在线观看| 亚洲爽爽一区二区三区| 亚洲国产一区二区三区| 日本一区免费电影| 精品亚洲永久免费精品| 一日本道a高清免费播放| 亚洲无砖砖区免费| 亚洲第一中文字幕| 亚洲AV无码成人专区片在线观看| 国产亚洲一区二区三区在线不卡 | 国产真实伦在线视频免费观看| 岛国av无码免费无禁网站| 免费看男女下面日出水来| 在线免费观看亚洲| 99久热只有精品视频免费观看17| 七色永久性tv网站免费看| 野花香高清视频在线观看免费| 精品免费久久久久国产一区| 中文字幕在线免费观看视频| 在线免费视频你懂的| 男女一进一出抽搐免费视频| 久久九九久精品国产免费直播| 51午夜精品免费视频| 爽爽爽爽爽爽爽成人免费观看| a毛片免费全部播放完整成| 久久国产精品成人免费| 少妇无码一区二区三区免费|