陰險的Bug,沈重的一擊



這張圖中隱藏著一隻邪惡的Bug,讓三日不Coding手就會癢的我,罕見地度過十餘小時萬念俱灰,了無生趣的職業生涯低潮,連多年來累積的自信都差點毁於一旦... 只有orz能代表我此刻的心情~~~
這陣子在寫一隻Window Form程式串接一個已存在的後台系統,目的要取代現行功能、效率不甚理想的終端程式。由於已有別人寫好的程式做為模仿對象,手上有詳細的協定文件(但沒有Sample Code),而通訊用Library可提供詳細的Log。本以為應該沒啥大問題,卻發現新寫的程式始終得不到Server端的正常回應。
於是分別把老程式與新Code的Log拿來比了又比,甚至還用Ethereal抓了封包,Follow TCP Stream將完整的傳輸內容Dump下來,用UltraEdit開成上下視窗一行一行比對,明明我的傳送內容與老程式完全相同,為何會被Server識破,就是不給我正確的回應??
排除了傳送內容有異的假設,我開始朝一些細微且可能性不高的機車細節推敲,例如: 送出各訊息間的Delay間隔、傳接用的Thread別...等等,由這些看似吹毛求疵的舉動,自己都可以感覺到,此時已經站在喪心病狂的臨界點了,距離拿鍵盤敲頭自殘大概也不遠了。
忽然一個念頭閃過,決定冷靜下來,回頭再仔細思考一次,最大的問題應該還是在於送出的訊息內容有誤! 於是我重新抓了正常與異常的Log,用UltraEdit一個字元一個字元比對,看起來仍然是完全相同的。害怕會是不可見的字元(例如: Tab, \n)之類惹的禍,於是叫出了UltraEdit的二進位比對功能。這才看到,原來要送出01,我卻誤打為O1(字母O跟數字1,這是個離譜的打字錯誤,打字時被鬼附身是我想到比較合理的解釋),而在UltraEdit、VS.NET中,0與O看起來幾乎是完全相同的,也是我比對了數十次卻一直未能發現的理由。
送錯了訊息內容,但Server未回應內容有錯,卻選擇了沈默不回應;UltraEdit與Visual Studio編輯環境的字型設定讓0與O二者難以用肉眼識別;過快跳離了最有可能的原因(錯送內容導致結果不同),太早鑽研罕見的狀況... 一連串的巧合,讓這個小小的Bug快速長成巨獸,給了Coding老鳥難以承受的沈重一擊。
不過,這樣的經驗,也讓我回頭檢討自己習以為常的Coding、Debugging Style是否流於過度自信,造成在某些狀況下陰溝裡翻船。謝謝這個Bug給自以為是的老骨頭一個謙卑自省的機會,重新學會用敬畏的心去面對技術議題。
PS: 忽然回想起當年擁有的第一部電腦,Intel 8088 4.77MHz的Acer PC,初學電腦的我,看著滿是綠色字母的單色CRT,老對零中間多的那一撇很感冒,抱怨為何硬要跟平常看的印刷字母不一樣。今天的我,特別想念那些有一撇的零...

歡迎推文分享:
Published 05 July 2006 08:57 PM 由 Jeffrey
Filed under:
Views: 12,898



意見

# lucas said on 06 July, 2006 08:46 AM

哈,這種錯誤最叫人捶心肝了!
不過這個事件藏了一個真理,「問題總是出在他最可能出現的地方!」,有時候會以為自己已經仔細檢查過了,而忽略最重要的關鍵,浪費了許多精力在其它不可能或鮮少發生的可能,寫程式如此,找忘掉收到那兒去的東西也是如此。

# 小熊子 said on 06 July, 2006 06:32 PM

除了 fixsys 字型(我也超愛用),微軟有出一個 font pack for vs2005

叫 Consolas 字型,不錯用,對於小螢幕而言,這個字型清楚,推薦使用。

http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&displaylang=en

# steve said on 11 July, 2006 10:36 AM

1跟l也是容易弄混的
大師要不要來一篇延伸閱讀:最適合程式設計人員使用的字型 ^^

# Darkthread said on 16 July, 2006 08:14 AM

最新消息,前幾天前同事Kichi的MSN Title是---"把00KEY成OO,結果誤了一個下午"!
看來我該把這篇帖子印個百八十份,像善書一樣放在公用電話上供人索取,阿彌陀佛~~

# llwang said on 14 April, 2008 07:47 PM

Coding 用字型推薦 Proggy Clean http://www.proggyfonts.com/ 或 Terminus Clean http://www.is-vn.bg/hamster/

# Orz said on 15 April, 2008 03:19 AM

我是使用 DejaVu Sans Mono

dejavu.sourceforge.net/.../Main_Page

搭配 ClearType 服用視覺效果還不錯 :P

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<July 2006>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication