上文:瘋狂的程序員 第二十八回
見屏幕一黑,絕影也不知道是怎么回事,以前在公司測(cè)試的時(shí)候從來(lái)沒(méi)出現(xiàn)這種情況,反正肯定是程序出了問(wèn)題,壞就壞在還是全屏,圖像一黑,整個(gè)屏幕就黑了。他用眼角的余光瞟了瞟周總,還好周總正在興致勃勃地給醫(yī)生們介紹KIPACS是如何如何好,只有醫(yī)院領(lǐng)導(dǎo)一個(gè)人發(fā)現(xiàn)了問(wèn)題。他趕忙退出全屏關(guān)掉KIPACS,再次打開。
醫(yī)院領(lǐng)導(dǎo)正要開口,絕影搶在他前面說(shuō):“這是正,F(xiàn)象,一般KIPACS用久了就要重啟一次。”那言外之意就是:“這黑屏的事,沒(méi)啥大不了的,我們?cè)缇椭懒恕2⑶疫@又是不能解決的,要能解決我們還不早就解決了。就比如手機(jī)一樣,就算是Nokia N95,夠高檔了吧,可是你能拿它放DVD嗎?放不了,還是將就著用吧。所以還是麻煩你們偶爾重啟一下吧!
周總聽他這么說(shuō),回過(guò)頭來(lái),丈二和尚摸不著頭。
最后醫(yī)院領(lǐng)導(dǎo)還是在驗(yàn)收?qǐng)?bào)告上簽了字,一行人撤回公司的時(shí)候,周總問(wèn):“小絕阿,那個(gè)KIPACS重啟是怎么回事呢?以前怎么沒(méi)聽你說(shuō)過(guò)?”
絕影哪敢給他講很話,忙說(shuō):“沒(méi)什么大不了的,回去我調(diào)研一下,估計(jì)還有些小BUG!
在公司做CASE就是這樣,雖然公司要求所有BUG的發(fā)現(xiàn)和修正都要最終體現(xiàn)到軟件開發(fā)文檔里,但實(shí)際操作起來(lái),往往是程序員發(fā)現(xiàn)了自己的BUG能隱瞞下來(lái)的都隱瞞下來(lái),自己抽個(gè)時(shí)間或者加班把它修改了,這樣給領(lǐng)導(dǎo)的印象要好一些。這和現(xiàn)在很多小煤窯的做法差不多,雖然上頭三令五申要杜絕安全隱患,但事故總還是要發(fā)生的,雖然又說(shuō)發(fā)生事故要如實(shí)上報(bào)及時(shí)補(bǔ)救,但小老板們總是能隱瞞不報(bào)就隱瞞不報(bào),自己私下處理了事。你想真要是如實(shí)上報(bào)你一個(gè)小小煤窯一年12個(gè)月就報(bào)了二十多個(gè)事故上去明年的開采許可證還怎么可能拿得到?
絕影說(shuō)是小事,回到公司又看了半天都還是沒(méi)搞明白,問(wèn)題就出在調(diào)窗上,這個(gè)調(diào)窗原理說(shuō)簡(jiǎn)單點(diǎn)其實(shí)就是把圖像的一些屬性調(diào)整一下然后重新繪制到DC上,小幅度地調(diào)整都沒(méi)有問(wèn)題,就是大幅度長(zhǎng)時(shí)間調(diào)整最后顯示圖像的部分都會(huì)黑掉。先他以為是對(duì)WM_PAINT消息的處理有問(wèn)題,這個(gè)就比較麻煩,系統(tǒng)經(jīng)常要發(fā)送WM_PAINT這個(gè)消息,在里面下個(gè)斷點(diǎn)或者加個(gè)MessageBox就一直要不停地彈出。搞了半天還是找不出個(gè)所以然。你想要是真是對(duì)這個(gè)消息處理出現(xiàn)了問(wèn)題,那應(yīng)該一早調(diào)窗就有問(wèn)題才對(duì)。
調(diào)試了幾次,絕影發(fā)現(xiàn)系統(tǒng)變得越來(lái)越慢,打開任務(wù)管理器,乖乖,KIPACS居然占用了300多M內(nèi)存。要知道KIPACS剛啟動(dòng)時(shí)不過(guò)只占用了17M內(nèi)存?礃幼酉袷莾(nèi)存泄漏。這樣想,他繼續(xù)調(diào)窗,調(diào)一下發(fā)現(xiàn)內(nèi)存漲上去可又沒(méi)降下來(lái),果然是調(diào)窗的時(shí)候發(fā)生了內(nèi)存泄漏。
知道了原因解決起來(lái)就要快得多,原來(lái)是GetDC獲取DC后沒(méi)有使用ReleaseDC把它釋放,這部分在WM_PAINT消息中,WM_PAINT消息又頻繁發(fā)送,所以那內(nèi)存泄漏起來(lái)真是要命得很。
加上ReleaseDC,KIPACS終于可以流暢地調(diào)窗,看看任務(wù)管理器,內(nèi)存占用基本穩(wěn)定在20M。
搞完這個(gè)BUG,絕影看看時(shí)間,已經(jīng)是晚上9點(diǎn)多,公司的人早不知道什么時(shí)候都走光了。這次的事情還是給絕影留下了深刻的教訓(xùn)以至于在很常一段時(shí)間,別人問(wèn)他:“影頭,你看看我這程序,怎么老是出問(wèn)題阿?”他都會(huì)跟別人說(shuō):“先看看是不是有內(nèi)存泄漏。”
問(wèn)題解決了,等到第二天周總來(lái)到公司,絕影便輕描淡寫地對(duì)周總說(shuō):“昨天那個(gè)KIPACS需要重啟的問(wèn)題我已經(jīng)解決了,是個(gè)小問(wèn)題,內(nèi)存泄漏。”
所以什么叫打腫臉充胖子。明明昨天花了5,6個(gè)小時(shí)憋得幾乎走投無(wú)路終于解決出的問(wèn)題現(xiàn)在在老總面前卻輕描淡寫地說(shuō):“是個(gè)小CASE而已!毕隑OSS Liu也許也是這樣,自己不知道熬了幾個(gè)通宵腦細(xì)胞不知?dú)⑺蓝嗌俳K于給做出個(gè)多線程出來(lái),卻輕描淡寫地說(shuō):“多線程嘛,那個(gè)還不容易,二三十分鐘就搞出來(lái)了!眱蓚(gè)人都是愛吹牛,好像自己能耐大得不得了,什么技術(shù)阿方法阿算法阿解決方案阿還不一切都盡在掌握中,原以為牛這樣吹了,大家就決定自己有多了不起,結(jié)果最后受苦的是自己,開心的是老板,老板們正是利用了這種心理,他們會(huì)說(shuō):“不錯(cuò)不錯(cuò),這么個(gè)大問(wèn)題能這樣快地解決,這個(gè)程序里面還有二十多個(gè)BUG,都是小問(wèn)題,給你一天的時(shí)間夠了吧!
周總對(duì)絕影反映的問(wèn)題還是比較關(guān)心,他說(shuō):“內(nèi)存泄漏這個(gè)問(wèn)題是廣泛存在的阿,這種問(wèn)題又最不好調(diào)試。我給你介紹個(gè)軟件吧,BoundsCheck,專門測(cè)試內(nèi)存泄漏!
在以前,絕影絕對(duì)不會(huì)去關(guān)心別人介紹的什么軟件,首先那軟件是別人介紹的,自己又不熟悉,軟件好不好阿,怎么用阿都要自己去摸索,特別是這個(gè)BoundsCheck一聽就知道是個(gè)英文版的軟件,還要拿金山詞霸去翻譯菜單或者網(wǎng)上到處去找漢化版,本來(lái)以為用這個(gè)軟件能極大地提高勞動(dòng)生產(chǎn)率,結(jié)果反而花在學(xué)習(xí)上的時(shí)間都遠(yuǎn)遠(yuǎn)超過(guò)了它提高的勞動(dòng)生產(chǎn)率,這叫“磨刀誤了砍柴工”。
可這次絕影還是比較慎重,昨天雖然把問(wèn)題解決了但實(shí)在把自己搞得太痛苦,也幸虧昨天開了任務(wù)管理器發(fā)現(xiàn)了問(wèn)題,要不說(shuō)不定把代碼跟蹤到太平洋還不知道問(wèn)題在哪里。
去網(wǎng)上下個(gè)BoundsCheck6 for VC,原來(lái)是大名鼎鼎的Numega公司出的,想能出SoftICE這樣的軟件的公司出的東西還能有假嗎?就比如今天微軟宣布出了一個(gè)新的操作系統(tǒng),那還不成為各大網(wǎng)站的頭條新聞。所以不僅是衣服,就是軟件也有個(gè)品牌效應(yīng)。
那天在公司又調(diào)研了一整天,絕影第一次知道了“純化測(cè)試”這個(gè)詞。以后每次周總說(shuō):“OK,明天我們進(jìn)行Purification!苯^影就跟大家翻譯道:“好,明天我們進(jìn)行純化測(cè)試,沒(méi)裝BoundsCheck的把BoundsCheck裝上,不會(huì)用的找我。”
出處:瘋狂的程序員
責(zé)任編輯:bluehearts
上一頁(yè) 下一頁(yè) 瘋狂的程序員 第二十九回 [2]
◎進(jìn)入論壇休閑灌水版塊參加討論
|