你在寫程式的時候經歷過哪些有趣的事?

2025-02-04 12:50:07 字數 1710 閱讀 5785

1樓:唐止99117讓狙

寫x86模擬器實驗的時候,有乙個測試樣例死活通不過,那是乙個大矩陣運算,除此以外所有測試樣例都能過。因為是在自己寫的模擬器上,大矩陣乘法跑一次要好幾分鐘,然後才能看到乙個鮮紅的hit bad trap,所以tm除錯的時候痛苦的一筆。關鍵是,當我試圖在測試樣例裡面列印變數的值的時候(加一條列印語句),這個測試樣例又tm過了!!!

當時我內心是相當懵逼的,彷彿這個bug在躲著我,一旦我去調他,他就消失不見了。因為是跑在自己寫的模擬器上,除了列印變數,幾乎沒有除錯工具!!然後一整個下午加晚上我都在一條指令一條指令的比對,然後發現某一段記憶體似乎出了點問題。

具體來說,測試樣例初始化的時候會往這一段記憶體裡寫入兩個大矩陣(對應。data節),然後後面又會從這裡把資料讀出來進行運算。問題就出在這裡,從某乙個位置開始,讀出來的資料和寫進去的資料就不一樣了。

然後我圍繞這一條指令開始二分除錯模擬器,同時臨時造了乙個輪子監視這一段記憶體,最後發現這一段記憶體是在處理器中某乙個單元測試被改掉的,由此逆推,最終發現是頁表實現的時候邏輯位址轉化為線性位址右移運算子特麼被我手殘寫成了左移運算子(╯°口°)╯當然到這裡還沒完,還記得一開始那個加一條除錯指令就過的bug嗎,具體來說,這個測試樣例。text的節的大小正好在臨界值,加一條print語句就會導致。text多佔乙個頁從而把。

data往後擠了乙個頁,而右移寫成左移的那個地方正好會把模擬器單元測試的位址轉化到這一段被擠出來的乙個頁內。而一旦沒有這條除錯語句,這個地方就會被。data節佔據,進而導致記憶體的值被修改引發bad trap (´這個bug直到凌晨才調出來,前後總計花了六個小時,bug本身一環扣一環,當時除錯的時候真的是欲哭無淚。

2樓:王倩

make的時候一直報某行shell命令有錯,大意是引數跟得不對;使勁盯著那行命令看了半天,沒發覺任何錯誤;把makefile裡的那行命令後(這玩意後巨長)複製到terminal中執行,報錯;然後對著那行巨長的命令乙個字元乙個字元照著打了一邊,執行,成功;σ(a 誒,怎麼還有這種玄妙的現象?!用手指戳著螢幕乙個字元乙個字元又比對了一邊,倆命令長一樣,沒毛病啊╰( ̄然後分別把這兩條命令作為字串寫進檔案裡,diff一發,誒,果然不一樣?!趕緊切換到16進位顯示下比對,發現有一處不同,執行失敗的命令是0xc2a0,另乙個命令中是0x20;後者我熟悉,就是一空格,那前者難道也是……空格?

嗯,中文空格;之所以makefile是新寫起來的,是因為那天寫的是個新開的項(tian)目(keng),所以恰好有螢幕錄影(用來留作開坑紀念的);回頭去翻看了下錄影,唔,有個命令是當時網上查完資料後,順手從某博文上覆制貼上來的。<>

3樓:華王

一兩年前了吧,for迴圈申請記憶體,忘了寫自增,執行後一瞬間電腦管家的小球變成的99%

寫你經歷過的奇妙夢境小練筆,寫一個你經歷過的奇妙夢境小練筆?

那裡bai可是一個童話世界du。天空像一幅淡雅zhi 而意境深遠的水粉畫dao 淡淡的藍底上飄著內白紗般的雲,容還有遍地的鮮花正在盛開。啊 原來我來到了春天 我走著,發現了蝴蝶在飛舞,蜜蜂在採蜜,我不僅吃到了香甜的蜂蜜,還欣賞了美麗的蝴蝶舞,真愉快 穿過了一條小徑,我來到一個群山環繞的地方,隨處可見...

你經歷過絕望嗎?這句話的出處,你經歷過絕望嗎?談談當時的經過

人生在世,誰還沒經歷過絕望呢,但現在的我不還是一樣好好的活著呢嗎,所以說千萬不要被絕望嚇到,命運掌握在自己的手裡!我覺得我去年暑假經歷的那次絕望是很令人心生怯意的,但是在我頑強的意志和堅定的信念支撐下,絕望過後,我又見到了豔麗的太陽。去年暑假我回到了家裡的時候正趕上摸爬蝦的 時期哦,而我從小就喜歡吃...

你經歷過最詭異的事情是什麼,你經歷過的最奇怪詭異的事情是什麼

我個人是不信世上有鬼的,所以也就不會信一些詭異的東西,但那天是真心發現一件特別邪乎的事情,而且是發生在我自己的身上。那天我是騎著共享單車去到去到和朋友約的一個商場逛街,之後我們又去吃了個飯,差不多下午五點鐘的時候,我就找了輛共享單車準備騎著回家了。就在我走了將近二十年的那條路上,在一個拐彎路口那,走...