在release中調試時,C++代碼不會擴展某些變量。什麼是不能擴展的變量,爲什麼這樣呢?我可以理解,發佈dll已經打包了額外的優化,但不太確定這是否是唯一的原因。此外還有什麼可以做,以查看這些值爲什麼在發佈模式下調試隱藏信息?
0
A
回答
2
即使假設你已經在構建調試信息,調試發佈版本(優化),一般是很難的。優化器可以將代碼的結果翻譯到您可能無法識別的地方。
它將完全刪除變量,並且隱藏它們來自調試器(因爲變量不在那裏,調試器不能顯示它們)。它可能不會刪除它,但暫時重新使用註冊溢出空間,您將看到變量跳到某個隨機值的內存值。該流程也可以重新排序和變量可能,並有正確的價值初始化一次,但初始化可能被進一步推下來,尚未執行...
如果你能重現問題的調試版本,我會從那裏開始。如果沒有,祝你好運。不要相信你看到的任何東西,而是儘可能從你可用的數據點中提取儘可能多的信息。
1
當您在「調試」模式打造,那麼編譯器(和鏈接)增加了這樣的事情變量,他們的名字,使用的源文件,行號的額外信息信息等。在「釋放」模式下編譯時缺少這些信息。它可以通過在項目設置中更改來添加。
+5
優化器可能決定不爲某些變量分配內存,因此即使存在調試信息時它們也是不可見的 – Andrey
相關問題
- 1. Python - 在非調試模式下隱藏調試消息
- 2. 在「調試信息發佈」模式下構建Qt?
- 3. QMAKE * .pro-file:在發佈模式下啓用調試信息
- 4. 在發佈模式下調試符號
- 5. 在發佈模式下調試
- 6. 爲什麼Interop.WMPLib無法在發佈模式下加載程序集,但在調試模式下工作?
- 7. 爲什麼我的應用程序在發佈模式下崩潰而不是在調試模式下崩潰?
- 8. 什麼是調試信息?
- 9. 布爾值在調試模式下比在發佈模式下有所不同
- 10. 發佈在發佈模式下,出版與調試配置
- 11. flex bitmapdata在發佈時爲空,但不在調試模式下
- 12. 在發佈模式/調試模式下雙精度的差異
- 13. 在調試模式和發佈模式下部署
- 14. ios對象在調試模式下發布但未在發佈模式下發布
- 15. 在調試模式下隱藏Visual Studio命令按鈕
- 16. 調試模式或發佈模式
- 17. 如何在調試模式下隱藏開發工作室工具欄?
- 18. 在發佈模式與調試模式下代碼的行爲有所不同
- 19. 在調試模式下訪問衝突,但在發佈模式下很好
- 20. GCC在調試模式下崩潰,在發佈模式下運行良好?
- 21. 項目在調試模式下失敗,但在發佈模式下工作
- 22. ObjectContext在調試模式下公開,在發佈模式下內部
- 23. Site.css爲調試模式,site-min.css爲發佈模式
- 24. 信息隱藏C++
- 25. 爲什麼SelectTemplate方法在調試模式下運行2次?
- 26. 爲什麼Jetty會在調試模式下啓動時掛起?
- 27. VS2010:爲什麼在調試模式下無法觀察變量?
- 28. 爲什麼IsClientScriptBlockRegistered在調試模式下總是返回false?
- 29. 爲什麼Visual Studio在調試模式下運行時發出嘟嘟聲?
- 30. 爲什麼沒有信息在電子郵件中發佈?
是的,這幾乎是唯一的原因。 –
使用日誌記錄查看這些變量 – Andrey
在visual studio中。我有時會修改RelWithDebugInfo配置,無需進行任何優化。這種方式調試更容易,我有釋放堆。儘管這隻對我關閉優化的代碼有所幫助。 – drescherjm