程序員的噩夢(mèng):碰到這樣的bug你怕不怕
bug是這樣的:
這個(gè)bug只發(fā)生在生產(chǎn)環(huán)境中,本地?zé)o法重現(xiàn)。
這個(gè)bug發(fā)生的頻次很低,但是還沒有低到可以忽略。
這個(gè)bug的產(chǎn)生和多線程里的資源競(jìng)爭(zhēng)有關(guān)(race condition)。
不知道這個(gè)bug是怎么觸發(fā)的。
這代碼不是你寫的,但是現(xiàn)在這個(gè)bug要你修復(fù)。而寫這塊代碼的人已經(jīng)離職了。
因?yàn)橐恍?kù)里(library)的問題導(dǎo)致了這個(gè)bug,這個(gè)庫(kù)99.9%的時(shí)候都很穩(wěn)定,然而調(diào)試到這些庫(kù)的時(shí)候你無法更進(jìn)一步調(diào)試了。
過去幾年里很多人都嘗試解決它,但是沒有人成功。
這個(gè)bug是個(gè)邏輯上的錯(cuò)誤,只有在系統(tǒng)運(yùn)行了一段時(shí)間后才會(huì)發(fā)生。
調(diào)試這個(gè)bug需要某一領(lǐng)域的專業(yè)知識(shí),然而你什么都不懂。
老板:我不管,明天就要改完。
這個(gè)bug不能推脫,搞不定就要走人。
來想象這樣一個(gè)場(chǎng)景:通過光波脈沖信號(hào)(light pulse signals)調(diào)試一個(gè)從地球發(fā)射出的火星探測(cè)器。這個(gè)bug只有在所有行星連成一條線時(shí),并且只在火星的大氣層里才會(huì)發(fā)生。產(chǎn)生問題的代碼非常難讀懂,因?yàn)橛昧艘粋€(gè)十幾年前退休的NASA科學(xué)家寫的庫(kù)(這些庫(kù)都沒有源碼)。你必須要解決這個(gè)bug,因?yàn)樾行邱R上就要連成一條線了(bug下一次出現(xiàn)要再等十年),搞不定的話這個(gè)投資上千萬刀的項(xiàng)目就要掛。
我現(xiàn)在就問你碰到這樣的bug怕不怕?
大聲的回答我!