發表文章

目前顯示的是 7月, 2012的文章

當機除錯法

小朋友:... 老王:... 小朋友:... 老王:兄弟怎麼了? 小朋友:老大,最近我在作的XXX在YYY的時候一直會ZZZ,不知道怎麼搞的, 我已經看Code看了幾天了, 一直找不到問題。 老王:為什麼不動手去找Bug呢?看Code太花時間了,也太難看出問題來。 小朋友:我也想,但實在是沒辨法啊... T_T 老王:不行Trace? 小朋友:不行... T_T 老王:不行丟訊息? 小朋友:不行... T_T 老王:Draw Something也不行? 小朋友:T_T 老王:丟Port也不行? 小朋友:嗚嗚嗚... T_T 老王:讓它叫一叫也不行? 小朋友 :嗚嗚嗚... T_T 老王:.... 小朋友:老大,還有什麼招式可以教教我嗎? 老王:好吧,這個時候就只好用我最後的絕招了!這是從我最尊敬的林老師那裡所繼承得到的絕招。據我所知,這個絕招原本只有三個人懂,一個是林老師,一個是我,另一個已經不在了,現在我傳授給你。 小朋友:(肅然起敬) 老王:聽好了! 我最尊敬的 林老師告訴過我說:你要當!就讓它當! 小朋友:...?? 老王:好了,以上就是禁斷的絕技當機除錯法的要訣。現在跟著我再複頌一遍。 老王 and 小朋友: 你要當!就讓它當! 老王:這是在任何方法都無效的情況之下,最後的Debug手段了,它的另一個別名叫作人工Debugger。這是因為我們要用人工的方法,一步一步的讓我們的程式在我們自己指定的地點造成當機,用這個手段來檢驗追踪程式執行的流程。這是個萬不得已的笨方法,很慢很花時間,但也只能用這個辨法了。 小朋友:我大概有點懂了。 老王:想辨法去找到可疑的問題點,再配合當機法慢慢夾擠,找到問題所在。總之,這個辨法的應用也還要再根據遭遇到的問題,配合應用。 我最尊敬的 林老師曾經告戒過我說:找Bug, 無論如何就是要不擇手段。你懂了嗎? 小朋友:嗯嗯,Yes Sir!我再去試試看。 (三個星期後....) 小朋友:老大!老大!哈哈哈,這下子終於讓我找到問題了!!! 老王:嗯,很好。怎麼找到的啊? 小朋友:我把電腦重灌,再重灌一次VC就可以Trace了。 ^_^ 老王:......