<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)  編輯  收藏 所屬分類: 蔡學鏞

    主站蜘蛛池模板: 中文字幕在线观看亚洲视频| 亚洲乱色熟女一区二区三区丝袜| 97se亚洲综合在线| 久久免费观看国产精品88av| 亚洲尹人香蕉网在线视颅| 免费人妻无码不卡中文字幕系| 久久精品国产亚洲av高清漫画| av无码国产在线看免费网站| 亚洲免费视频播放| 欧美在线看片A免费观看| 亚洲欧美成人av在线观看| 日韩在线a视频免费播放| 高潮毛片无遮挡高清免费视频 | 亚洲av无码片在线观看| 91免费资源网站入口| 亚洲一线产区二线产区区| 免费鲁丝片一级在线观看| 一级片在线免费看| 亚洲AV日韩AV永久无码免下载| 中国人xxxxx69免费视频| 亚洲日韩一区二区三区| 亚洲国产精品一区二区第一页免| 伊人免费在线观看高清版| 亚洲邪恶天堂影院在线观看| 永久免费毛片在线播放| 免费的黄色网页在线免费观看| 亚洲情综合五月天| 欧洲精品成人免费视频在线观看| 国产亚洲精品美女久久久久| 亚洲国产精品无码av| 一二三四视频在线观看中文版免费 | 国产亚洲精品VA片在线播放| 亚洲 另类 无码 在线| 在线观看片免费人成视频无码 | 久久精品国产亚洲Aⅴ蜜臀色欲| 免费播放一区二区三区| 亚洲AV无码专区在线厂| 久久久久亚洲精品无码系列| 成人激情免费视频| 嫩草成人永久免费观看| 久久亚洲精品高潮综合色a片|