1. 程式人生 > >程式設計師經歷過的最難除錯的Bug是什麼?

程式設計師經歷過的最難除錯的Bug是什麼?

程式設計師與Bug是一對相愛相殺的存在,既要在解決Bug中get成就感,同時也討厭自己親手寫的程式碼出Bug。”程式不息,Bug不止”,程式設計師在與Bug的鬥爭中,也有很多有趣的事情發生,播妞總結了程式設計師除錯Bug的種種傳奇經歷。

01  

@網友王譯:

當時我們在做 Egret Runtime 的第一個版本,可以理解為他就是一個 Android GLSurfaceView 渲染器。

當我從開發工程師手中拿到第一個新鮮出爐熱乎的開發版的時候,我發現一個現象,就是遊戲整個 App 會不時崩潰掉,crash日誌大概描述的是 C++ 掛掉了,當時我由於經驗不足,還不會根據 C++ 的 dumpstack 去檢查是哪個模組的問題。所以我決定先嚐試重現一下這個問題。

重現步驟:

1、把手機放在桌子上,開啟 App,觀察5分鐘,未崩潰

2、5分鐘的時候接了個電話,接完後 App 崩潰

3、意識到可能是 Android 生命週期問題導致的,於是重新開啟 App,反覆在前臺 / 後臺切換,未崩潰

4、由於長時間彎腰盯著桌子上的手機,有些不舒服,於是把手機拿起來,想舒服的後仰坐在工位上繼續重現,然後在把手機拿起來的一瞬間,崩潰。

5、嚇一跳之後,小心翼翼的重新開啟 App,思索自己剛才到底做了什麼,同時緊握著手中的手機繼續盯著螢幕,觀察5分鐘,未崩潰

6、心情暴躁,把手機扔到桌子上,崩潰

7、驚愕......

8、重新把手機拿起來,再次扔到桌子上,崩潰

9、給開發的同事講,我重現出了這個BUG,只要用力把手機往桌子上砸一下,就會崩潰

10、開發同事匪夷所思的表示沒有呼叫過陀螺儀之類的 API,只是個簡單的渲染。

11、現場演示狠狠的砸了一下我的手機,崩潰重現

12、開發同事狠狠的砸了一下他自己的測試機,未重現,於是拿過來我的手機,進行真機除錯( 每次除錯就要砸一下我的手機....請自行腦補我的表情)

13、最後發現,原來是當手機被狠狠砸一下的時候,螢幕旋轉方向發生了改變,然後觸發了 OpenGL 底層渲染的問題沒有 Handle 住 ...... 

14、用3分鐘修復了此問題,然後對著被砸了20多次的手機淚流滿面.....


02
   

@網友條件狀語從句:

寫JS,手機沒電了,用同事老張的安卓機除錯,非常簡單的獲取使用者微信暱稱,結果就是死活獲取不到,一直顯示null。也許是跨平臺問題,因為之前在自己iPhone上是沒出bug的,拼命看api文件,但都沒提到這方面。急死我了。

剛剛老張告訴我他的暱稱就是null


03   

@網友王傑:百分之百出現的bug都是好bug,多執行緒裡的能重現的bug都是上帝給予的驚喜!

04  

@網友weishuo1999:某大型電商平臺,突然有一天,收到C2C店主反饋,看到的訂單不是自己的,看到後臺的商品列表也不是自己的。當時在睡午覺,看到這個問題,立馬嚇醒了,平時5個投訴就是一個故障單,那還都是一點體驗上的小問題,這種訂單混亂,商品混亂的錯誤,真是要緊急死了。

於是,主管,總監都來看這個問題,一群大佬在後面看著,趕緊找最近幾天的釋出,測試情況,一個個回退,一個個檢查,最後都無法解決問題。後續又有使用者來投訴,直接電話聯絡,遠端控制電腦,發現操作起來巨慢,於是順口問了一下使用者的網路是什麼網路。

結果他說是:”某城寬頻”,一瞬間,有點感覺了,繼續問其他幾個投訴的客戶都是”某城寬頻”,然後我們打電話到那個寬頻的運營商,得到的回覆是”年底了,為了省流量,他們做了一部分快取”

他們做了快取

做了快取

快取


05   

@匿名網友:

說一個前幾天事情想拿刀砍死同事的事情

背景是這樣:我們是做客戶端遊戲的,當單元測試過完後,整合起來走整體流程的時候,發現執行模擬器是黑屏的,一看就是出BUG了,連遊戲的FP畫面都沒有繪製回來,

於是乎檢視執行記錄,看丟擲的異常,我丟,根本就沒有異常,可以排除沒有下載到FP的圖片(抱歉由於是公司正準備上線的專案,所以體諒下不好截圖),難道是某個同事在被程式設計師鼓勵師“鼓勵”的時候,手賤沒有throw出異常嗎?於是一項一項在程式碼中找,在排除有丟擲後,那我就重頭來吧,有讀取引擎中的下載和繪製,有存檔新使用者的log資訊,有獲得資源版本號,難道是測試伺服器堵塞了?

於是又root進伺服器,查程序,查佔用資源等等,一切經驗都無能為力而感到絕望,只有去問寫這個頁面和框架的人一起詢問下,結果是由於美工的FP圖片出問題,所以就把FP的頁面背景全部繪製成黑色了,而且還忘記在上面用程式字型寫上“此處是FP”,頓時心裡就一萬條草泥馬跑過,連第二天上班望那位頁面小哥都是充滿敵意的,分分鐘想砍翻他。

附第二天聊天記錄


06  

@網友李意揚:

全國電子設計大賽,比賽做逆變器相關,做出來效率大於100%,找不出原因,評委也找了半天找不出原因。然後就給了一等獎。

07   

@網友shuson:那是一個大雪紛飛的傍晚,農曆大年二十九的傍晚,我站在回家的春運綠皮車內,包裡裝著一疊實習結束後發的工資,心裡想著回家可以給爹孃買添置年貨了。

這時候,電話響起來了,是測試組長打來的,接不接?可是漫遊啊,接吧!因為組長都給我打電話了,肯定問題嚴重。接通後他第一句話就是,看QQ群資訊,log已經分享到群裡了,然後簡單了描述了一通。

我撂下電話,開啟qq,別問為啥沒筆記本,因為我沒錢買。藉著N72的2寸小屏,我打開了txt格式的log,載入了好久,心疼流量。bug是在儲存使用者資料的時候,填入的使用者出生年月日沒有儲存。像這樣的問題,要是在公司,首先去看資料庫,然後再看程式碼。

可是測試那邊的人為了著急回家肯定就先甩鍋咯。根據log,沒啥異常。我回復說log沒毛病。那邊就著急了,讓我憑空跑一遍流程。我擦咯,大腦需要虛擬出來vs,還需要虛擬出來資料庫表,還要虛擬asp頁面結構啊。

要知道,code不是我寫的啊,資料庫表也不是我建的,頁面也不是我切的,我只是個實習生,看了三個月程式碼而已。

任憑記憶穿梭,我告訴組長,可能是頁面上展示邏輯問題。組長重新接過鍋,準備甩向前臺同學了。

至此,我快到家了。

以上程式設計師遇到的充滿玄學的Bug除錯經歷,你是否有遇到呢?你曾經經歷過哪些哭笑不得或者趣味十足的程式碼除錯經歷,留言告訴播妞吖~