国产二区免费在线观看-青青操在线观看国产视频-男人的天堂 在线一区-黑丝美女被内射视频免费观看

技術(shù)中心

這里象征著我們的態(tài)度和能力

程序員最恐怖的夢(mèng)魘是什么?
作者:admin    來(lái)源:本站原創(chuàng)    發(fā)布時(shí)間:2015-12-29      瀏覽次數(shù):13177
分享到:

  曾經(jīng)有位心理學(xué)的博士雇我查一個(gè)BUG,程序是他的一個(gè)學(xué)生寫(xiě)的,經(jīng)常會(huì)出現(xiàn)奇怪的輸出。程序的功能是,從文件中讀取數(shù)據(jù),提出50個(gè)問(wèn)題,進(jìn)行一系列計(jì)算,然后基于這位博士的研究來(lái)得出一個(gè)分?jǐn)?shù)。程序跑在大學(xué)的一臺(tái)3B2上。他給我演示了程序,確認(rèn)這個(gè)Bug可以重現(xiàn)——每次在問(wèn)題之間切換的時(shí)候,總會(huì)閃出一些奇怪的字符。我覺(jué)得這應(yīng)該很簡(jiǎn)單,所以答應(yīng)了他,并且我們同意按小時(shí)付費(fèi)。

  Day1
  我來(lái)到這臺(tái)3B2面前,用那個(gè)學(xué)生的帳號(hào)登錄,找到了用C寫(xiě)的源代碼,并開(kāi)始測(cè)試。代碼可讀性非常差,所有的代碼都寫(xiě)在了一行,變量名都是三個(gè)字母,而且還是隨機(jī)組合的!真慶幸我當(dāng)初選擇按小時(shí)收費(fèi)。我把代碼格式化為習(xí)慣的風(fēng)格,這樣看起來(lái)多少還能讀。
  做完之后,我用curses庫(kù)移到屏幕上一個(gè)點(diǎn),打印一個(gè)問(wèn)題和答案,然后等待回應(yīng)。但是在打印出第一行之后,出現(xiàn)了一些亂碼,過(guò)了大約1/2秒之后,亂碼被問(wèn)題覆蓋掉。這個(gè)問(wèn)題應(yīng)該很容易解決,只有五個(gè)地方需要打印信息,所有的地方都出現(xiàn)了一閃而過(guò)的亂碼。小意思,只要?jiǎng)h掉mvpwintw()應(yīng)該就ok了。我刪掉之后開(kāi)始編譯,覺(jué)得問(wèn)題差不多解決了。但是運(yùn)行的時(shí)候,干擾信息又出現(xiàn)了!只是亂碼變了,但是癥狀還是一樣!
  我檢查了一下代碼,發(fā)現(xiàn)竟然回到了我改之前的樣子!15個(gè)文件,混亂的格式,三個(gè)字母的變量。當(dāng)初為什么不備份一下代碼呢,真想射自己一槍。我再一次格式化它們,這次把代碼放到三個(gè)文件中,以不同的名字命名。然后備份了整個(gè)文件夾,并且將權(quán)限設(shè)置為只讀。編譯之后,一切正常。一運(yùn)行,這個(gè)文件夾中又出現(xiàn)了15個(gè)文件!我改過(guò)之后的源代碼沒(méi)有被刪除,然后干擾信息又回來(lái)了。
  我明白了,這一定是在硬盤(pán)的某個(gè)地方的代碼,在編譯的時(shí)候會(huì)將程序添加到我修改的代碼中去。所以我準(zhǔn)備搜索一下include區(qū)域(/usr/include),因?yàn)槲覀冇玫氖茄芯康陌姹?,所以除了kernel別的代碼都在機(jī)器上。頭文件太多了,所以在3B2上搜索需要花一些時(shí)間。以上,就是第一天的工作了。
  Day2
  從磁盤(pán)的搜索中沒(méi)有得到什么結(jié)果,這說(shuō)明這些亂碼要么是被加密了,要么就是在lib中的某個(gè)地方。但是我沒(méi)有搜到,我決定搜索所有的文本文件,這次花的時(shí)間比昨天更長(zhǎng),第二天就這這樣過(guò)去了。
  Day3
  沒(méi)有結(jié)果。字符串是加密的。我只好根據(jù)所有的頭文件來(lái)一點(diǎn)一點(diǎn)查了。這會(huì)花費(fèi)相當(dāng)多的時(shí)間,我們同時(shí)還警告了學(xué)校,可能有人得到了Phelps博士計(jì)算機(jī)的root權(quán)限。但他們卻對(duì)此并不關(guān)心,可能只是一臺(tái)實(shí)驗(yàn)室的計(jì)算機(jī)吧。
  我打開(kāi)#include文件,卻沒(méi)有發(fā)現(xiàn)代碼。后來(lái)發(fā)現(xiàn)這些都被編譯成一個(gè)文件了。也沒(méi)什么關(guān)系,畢竟我們有源代碼,大不了就重新編譯所有的庫(kù)。
  Days4-6
  接下來(lái)是最難的部分了,我們好不容易向?qū)W校的書(shū)呆子說(shuō)明了問(wèn)題。然后讓Mark(我覺(jué)得他能做Unix管理員完全是因?yàn)槿⒘薉ean的女兒)開(kāi)始學(xué)習(xí)編譯。最后他終于同意交給我來(lái)做,因?yàn)樗裁炊疾粫?huì)。在第6天最后,編譯工作終于完成了。
  我拿出修改之后的代碼,重新開(kāi)始編譯。一切正常,然后我運(yùn)行了一下,天吶!這問(wèn)題又出現(xiàn)了。源代碼分成了15個(gè)文件,干擾信息又出來(lái)了。簡(jiǎn)直跟魔法一樣,我覺(jué)得自己被打敗了,問(wèn)題肯定不在源代碼里。Phelps博士也有點(diǎn)不樂(lè)意了,他覺(jué)得這么長(zhǎng)時(shí)間,即使重新寫(xiě)一個(gè)也該完成了。“當(dāng)然”,我失落地說(shuō),“你是對(duì)的,說(shuō)不定重寫(xiě)比較好?!薄昂玫模覀兠魈扉_(kāi)始重寫(xiě)?!辈┦空f(shuō)。
  Day7
  見(jiàn)鬼去吧,我不會(huì)認(rèn)輸?shù)?!我跟Phelps博士說(shuō):“你不用付給我錢(qián)了,只要給我時(shí)間,我一定要找到這個(gè)bug。”
  Days8-14
  我學(xué)聰明了,他一定是修改了一些庫(kù),我開(kāi)始研究編譯出來(lái)的匯編(雖然我之前根本就不懂匯編),從開(kāi)始學(xué)習(xí),到最后看懂匯編代碼,花了六天。雖然根本沒(méi)發(fā)現(xiàn)什么異常,完全就是在浪費(fèi)時(shí)間。
  Day 15
  突然,我意識(shí)到,問(wèn)題可能出在編譯器上,一定是。每次編譯代碼的時(shí)候,編譯器就會(huì)往源代碼中添加干擾信息。我以前也聽(tīng)說(shuō)過(guò)這種情況。
  啊耶!我找到了!我們也有編譯器的源代碼,我查了一下,謝天謝地,終于找到了。編譯器鏈接器中的代碼是這樣的:
  1)檢測(cè)所有對(duì)fopen()的調(diào)用,在打開(kāi)的文件中查找Phelps博士的問(wèn)題,如果找到
    2)編譯的時(shí)候,重寫(xiě)15個(gè)文件
  3)使用這15個(gè)文件編譯博士的程序,在鏈接的時(shí)候會(huì)輸出-o形式的名字
  編譯器被這個(gè)學(xué)生修改了,以便往Phelps博士的程序中添加代碼。
  幾天之后,AT&T的技術(shù)支持提供了原版的編譯器和鏈接器代碼,我們重新編譯,替換了被修改的編譯器和鏈接器。
  但是,問(wèn)題還沒(méi)有解決。編譯器被其他我們沒(méi)有的源代碼污染了。這些代碼存在于現(xiàn)在可執(zhí)行的編譯器中,在編譯編譯器的時(shí)候,會(huì)加入污染代碼。但是它并不修改/usr/src中的代碼,而是將其復(fù)制到一個(gè)隱藏文件夾,修改編譯器源代碼,編譯,最后刪除隱藏文件夾。AT&T發(fā)現(xiàn)這個(gè)問(wèn)題花了好長(zhǎng)時(shí)間。這個(gè)學(xué)生修改了編譯器,讓編譯器重新編譯的時(shí)候加入污染代碼。最后我們不得不從另一臺(tái)3B2機(jī)器上復(fù)制過(guò)來(lái)編譯器的字節(jié)碼文件版本,才終于解決這個(gè)問(wèn)題。
  通過(guò)編譯器的代碼我們還發(fā)現(xiàn),如果編譯/sbin/login的話會(huì)加入一些后門(mén)代碼,可以允許任何人使用特定的密碼來(lái)登入root。這臺(tái)電腦可以通過(guò)調(diào)制解調(diào)器或Tymnet接入。終于,這件事引起了校方注意。
  這人真是個(gè)天才,不過(guò),也太恐怖了!

  其他網(wǎng)友回答
  1.Bug只在產(chǎn)品中有,開(kāi)發(fā)版本中卻沒(méi)有或者不可重現(xiàn)
  2.bug觸發(fā)的幾率很小很小,卻又不能小到可以忽視
  3.去改不是你寫(xiě)的代碼中的bug,原來(lái)寫(xiě)代碼的這家伙已經(jīng)離職了
  4.發(fā)生bug的地方是99.9%可靠的庫(kù),是你絕對(duì)不會(huì)懷疑的地方
  5.幾年來(lái)很多人嘗試去修改的bug,但是沒(méi)有人成功過(guò)
  6.存在邏輯錯(cuò)誤的bug,只有在運(yùn)行一段時(shí)間之后才會(huì)觸發(fā)
  7.debug需要特定領(lǐng)域的知識(shí),正是你不懂的
  8.debug的deadline很緊
  9.Stack Overflow掛了
  10.在Stack Overflow上搜索問(wèn)題,發(fā)現(xiàn)有人一年前問(wèn)了同樣的問(wèn)題,但是沒(méi)有人回答。
  11.分號(hào)鍵失靈
  12.看自己一年以前的代碼,有種“這真他媽是我寫(xiě)的”的感覺(jué)
  13.庫(kù)沒(méi)有文檔
  14.客戶又改需求了
  15.==寫(xiě)成了=
  16.IE(如果你做前端)
  17.Github merge沖突
  18.在錯(cuò)誤的目錄下 rm -rf
  19.“My code works, I don’t know why”(這句話不需要翻譯了)
  20.開(kāi)會(huì),開(kāi)會(huì),開(kāi)會(huì)……作為程序員讓我去死吧
  那么,你的噩夢(mèng)又是什么呢?

4000-880-989
(24小時(shí)熱線)
聯(lián)系客服
微信公眾號(hào)

官方公眾號(hào)

小程序

?2008-2022 CORPORATION ALL Rights Reserved. 昆明奧遠(yuǎn)科技有限公司版權(quán)所有 滇ICP備09003328號(hào)-1 滇公網(wǎng)安備 53011102000818號(hào) 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證號(hào):滇B2-20110045
昆明那家網(wǎng)絡(luò)公司好,新媒體運(yùn)營(yíng),網(wǎng)站優(yōu)化,網(wǎng)絡(luò)推廣,網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站推廣,云南網(wǎng)站公司,昆明新媒體公司,云南網(wǎng)紅主播,昆明SEO公司,昆明網(wǎng)站建設(shè),昆明網(wǎng)絡(luò)推廣,昆明網(wǎng)站優(yōu)化,昆明網(wǎng)站推廣,紅河網(wǎng)站建設(shè),大理網(wǎng)絡(luò)公司,曲靖網(wǎng)絡(luò)公司,麗江網(wǎng)站設(shè)計(jì),昭通網(wǎng)絡(luò)公司,保山大數(shù)據(jù)服務(wù),智慧高速建設(shè),智慧校園服務(wù),云南IDC服務(wù)商,網(wǎng)絡(luò)安全測(cè)評(píng),等保測(cè)評(píng),網(wǎng)站關(guān)鍵詞排名優(yōu)化服務(wù),服務(wù)客戶盡超2000余家,一切盡在奧遠(yuǎn)科技,服務(wù)電話:13888956730
欧美字幕一区二区三区| 欧美日韩综合在线第一页| 国产精品免费视频专区| 国产级别精品一区二区视频| 蜜桃av人妻精品一区二区三区 | 91超频在线视频中文字幕| 午夜精品在线观看视频午夜| 99久久精品国产日本| 大香蕉精品视频一区二区| 91亚洲人人在字幕国产| 亚洲精品国产精品日韩| 又大又长又粗又黄国产 | 国产日韩久久精品一区| 日韩人妻欧美一区二区久久| 好骚国产99在线中文| 国产精品免费视频专区| 精品日韩中文字幕视频在线| 东京不热免费观看日本| 国产欧美日产久久婷婷| 国产不卡最新在线视频| 青青操在线视频精品视频| 99久久精品久久免费| 大香蕉精品视频一区二区| 欧美日韩成人在线一区| 激情五月天深爱丁香婷婷| 好吊妞在线免费观看视频| 欧美黄色黑人一区二区| 日韩少妇人妻中文字幕| 69精品一区二区蜜桃视频| 日本人妻精品中文字幕不卡乱码| 免费播放一区二区三区四区| 自拍偷拍福利视频在线观看| 国产精品99一区二区三区| 91欧美激情在线视频| 日本99精品在线观看| 亚洲精品中文字幕在线视频| 欧美日韩免费观看视频| 欧美日韩在线视频一区| 欧洲自拍偷拍一区二区| 国内自拍偷拍福利视频| 国产精品一区欧美二区|