乙個「 1 INF000」引發的bug

2021-06-21 12:11:54 字數 573 閱讀 6643

在c++**中,今天除錯時,發現乙個變數的值都變成了「-1.#inf000」。如下圖所示:

出錯的變數

變數值變得不正常了,所以接下來的操作都不正確了,最終導致了不正常的結果。

起初不知道該怎麼去除錯,感覺無從下手。後來加了測試的判斷,當滿足該判斷時加入assert(false), 這樣就可以輕鬆的找到引起錯誤的罪魁禍首了。

出錯的變數名為:box,box.mminimum 和 box.mmaximum存的是float型別的值。

加入的判斷為:

if(box.mminimum -10.0f == box.mminimum)

這裡其實box.mminimum做任何的操作都不會改變其本身的值。利用這一特點快速除錯出bug出錯的地方。

下面對這一類的值做一下解釋:

(1)1.#inf: 表示無窮小

(2)-1.#ind: 做除法時除數為0

(3)1.#inf000:正無窮大

(4)-1.#inf000:負無窮大

再遇到類似的出錯資訊時,就可以解決了。

乙個base64引發的血案

結果發現header跟body之間多了乙個換行符 r n http協議預設header和body之間有乙個空行隔開,也就是乙個只含有 r n的行,但是多了乙個 r n,就會導致伺服器取body的時候從這個多出來的 r n開始取content length個字元,這樣body裡最後的兩個字元就被這個多...

乙個bug引發的感想

上周五,系統出現乙個bug。基本描述如下 b功能上傳乙個到 b路徑 a功能要獲取b路徑的,但是獲取路徑寫錯了,寫成了a路徑。線上突然出現此問題,訂單無法完成。該功能用到的頻率還比較大。無法馬上布版本。首先的想法想通過改資料來解決,但是發現不行。資料是動態的,不能改,也改不過來。其次的想法 新增b路徑...

乙個 passive 引發的bug

不是什麼很難的東西,權且做個記錄。首先說下背景,目前的專案中,需要同時繫結 wheel 和 scroll 事件。繫結 wheel,目的是開發 ctrl wheel 縮放頁面功能,此功能與瀏覽器本身的衝突,因此需要禁用滾輪原生功能,示意 window.addeventlistener wheel fu...