我正在使用Visual Studio 2008中的一個C++應用程序 我以最大速度(/ o2)構建了我的項目(從屬性 - >配置屬性 - > c/C++ - >優化 - >優化) 無法在調試代碼時觀察變量值。請幫助。無法在Visual Studio中觀察變量值並將編譯器優化設置爲最大化速度(/ O2)
回答
這是正常現象。一旦你激活了優化,編譯器幾乎忽略了你的所有變量請求,並試圖做它認爲最好的。
還有就是爲什麼調試版本沒有優化的理由啓用:)
編輯:你可能有一些運氣啓用或禁用優化的代碼的特定位。試試這個鏈接:http://msdn.microsoft.com/en-us/library/chh3fb0k(VS.80).aspx
那麼,是不是可以優化調試版本?如果我想更快地進行調試呢? 如果不允許在調試版本中進行優化,那麼當用戶設置優化時,它是否會給出任何警告? – bjskishore123 2010-08-27 08:37:07
沒有任何警告,變量只是在它們移動/合併時排列「消失」。 – Blindy 2010-08-27 08:41:38
@ bjskishore123:您仍然可以調試發佈版本。但是你必須忍受你的代碼在某種程度上被破壞,因爲這是優化*做的*。如果優化從代碼中刪除了一個變量,那麼您顯然無法在調試器中觀察它。在「堅守我寫的代碼」與「將我的代碼轉換爲更高效的代碼」之間有一個權衡,其中後者意味着源代碼所說的內容(例如變量存在或該行N在第N + 1行之前執行)以及運行或調試應用程序時實際發生的情況 – jalf 2010-08-27 08:44:11
有時候使用C++代碼的「反彙編視圖」,並通過優化發行版x86,可以讓您瞭解發生了什麼。要特別注意函數調用(很多時候這些函數不能被優化),以及圍繞這些調用的代碼 - 前後,註冊使用情況(很多時候變量優化到硬件寄存器中)。
無論這個工作是否有效,您都會學習一些關於x86彙編,編譯器優化以及C++如何實際實現的知識!
- 1. Visual Studio 2010 - 優化大小或優化速度
- 2. 在VC是什麼的#pragma當量/ O2編譯選項的(優化速度)
- 3. Visual Studio:將變量值的變化設置爲停止條件
- 4. 觀察成員變量值的變化
- 5. 觀察Angular2中的變量值變化
- 6. 由編譯器優化的變量
- 7. 轉化觀察到變量
- 8. 在Visual Studio 2008中打開編譯器優化專業
- 9. 編譯速度Visual Studio
- 10. 將觀察值設置爲R中該觀察值的最小值
- 11. 通過cmake設置visual studio中的優化設置
- 12. 編譯器優化
- 13. 什麼是Visual Studio中的C++編譯器優化技術
- 14. GreenDAO:觀察變化
- 15. 耙 - 觀察變化
- 16. 編譯器優化
- 17. 在Visual Studio(C#)編譯時設置值?
- 18. 編譯器優化如何影響數據加載速度?
- 19. 您通常如何設置編譯器的優化設置?
- 20. 奇怪的編譯速度優化的結果 - IAR編譯
- 21. 觀察UIDatePicker中的變化
- 22. g ++ -O2錯誤地優化了SIMD變量賦值
- 23. 觀察變量變化不起作用
- 24. 我可以在哪裏修改Visual Studio中詳細的C#編譯器優化設置?
- 25. 在計算加速時使用編譯器優化
- 26. 變量聲明位置的編譯器優化
- 27. Microsoft C++編譯器:如何禁用/ O2自動矢量化?
- 28. 爲Visual Studio優化windows XP
- 29. 在Visual Studio 2010中最大化XAML設計器
- 30. 設置BrowserSync以使用構建過程並觀察變化
恐怕這是一個已知的問題,因爲當優化編譯器可以完全消除一些變量,或將它們保持在奇怪/多重重疊的位置時,會使調試器混淆。請參閱http://msdn.microsoft.com/en-us/library/606cbtzs.aspx。 – 2010-08-27 08:34:54