2012-03-07 190 views
1

我經歷了很多關於「爲什麼版本構建失敗而不是調試?」的主題,但是我遇到了相反的情況。 這裏的發佈版本工作正常,但調試模式建立休息。 發生這種情況的可能原因或情況是什麼? 任何答覆表示讚賞。 在此先感謝。爲什麼Debug構建失敗而Release構建成功?

我們的一個朋友給了對內存釋放問題的一些方向..

這是我面臨同樣的事情... 當我建立在釋放模式成功地建立,但是當我嘗試建立在失敗調試模式/在一個點那裏是釋放所分配的內存語句就會中斷..

代碼如下:檢查是否緩存爲空,並釋放它,如果它不是空...

如果(緩衝區){ free(buffer) }

當我繼續在該行斷點(內如果循環),並檢查在調試模式下的值,它顯示爲「壞指針」。(0x000000處)

但隨後問題仍然想幹嗎,如果環內去即使緩衝區的值爲0x000000?

+2

您需要在要張貼特定的錯誤消息讓我們獲得更好的感方向:失敗的原因可能非常多,隨機猜測並不比在黑暗中射擊更好。 – dasblinkenlight 2012-03-07 19:25:26

+0

你打算什麼意思。最簡單的方法是將doem代碼放入#ifdef DEBUG塊 – Mark 2012-03-07 19:26:10

+0

Captain Obvious說:「這是版本與調試版本之間的區別之一。通常他是對的;) – 0xC0000022L 2012-03-07 19:27:03

回答

0

我不知道你的環境的細節,但是一些調試環境需要額外的步驟來觸發錯誤(例如用無效數據填充freed內存),而發佈版本不會,讓你有更多機會幸運。

的問題是,你的運氣往往當你從測試數據上移到一個真實的環境中運行了....

+0

這是調試vs發行版可執行文件可能出現的問題的一個很好的列表,但不能解釋構建失敗。問題說「構建中斷」。 – 2012-03-07 20:02:25

+0

@BenVoigt,問題中的措辭可以被解釋爲兩種方式。 「調試構建」與「發佈構建」。它需要澄清。我希望構建失敗會包含錯誤消息。 – 2012-03-07 20:12:55

0

我建議如果你使用visual studio,可能你對不同的配置文件有不同的配置(鏈接器,庫,路徑等):Debug,Release。通常,這個IDE與Visual Studio一樣,爲這些模式提供了這種類型的GUI配置。