簡體   English   中英

VS2010 Express建議在調試模式下進行優化,並且在沒有優化的情況下無法運行應用程序

[英]VS2010 Express recommends optimizations in debug mode, and fails running the app without them

我們最近遇到了VS2010 Express C ++的非常奇怪的行為。

我們的應用程序完美無瑕地運行,盡管它是一個很小的編輯器窗口,但在調試模式下突然顯示出意外行為,例如以某種方式呈現到全屏。

我們發現,可以通過將調試模式中的代碼優化從“停用”(/ Od)切換到“項目默認值”來禁用新行為,然后意外地使用“最大速度”選項(/ O2)。

如果不是因為進行代碼重組而現在幾乎不可能進行調試,那么這並不是一件壞事,因此斷點,單步執行,查看值只是毫無意義的。 調試器甚至無法找出變量的正確值(這只是邏輯上的)。

所以我很困惑該怎么辦。 為什么它首先失敗,為什么要在調試模式下優化程序?

同樣,不好笑,我們遇到了一個c ++編譯器錯誤,在該錯誤中,編譯器未注意到未交出模板參數的問題,因此使某些代碼默默地失敗了。

項目默認值不是調試模式默認值,但實際上是發布模式的默認值。 項目默認值不了解調試/發布配置。 覆蓋/ Od是調試配置的默認設置。 如果您已將調試配置中的所有項目屬性重置為默認值,則您已將調試配置設置為與發布模式幾乎相同。

調試/發布配置沒有什么特別的-它們只是名稱,因此項目屬性不包含每個配置的特殊默認值。

想像諸如返回值優化之類的東西。 還要查找打開代碼優化時編譯器避免創建的臨時對象。 也許您可以使用某些C ++ lint應用程序來排除代碼在調試模式下行為異常的一些原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM