我遇到了一個異常,並在監視窗口中查看變量,我看到一些問號(???)。這是否意味着它指向一個無效的地址?Visual Studio觀察窗口中的問號(???)是什麼意思?
7
A
回答
5
這意味着調試器無法計算出它的值。
例如,如果您的代碼涉及HWND
s,您會看到相當多的內容。如果你通過Windows的頭文件,它是通過一個宏定義是這樣的:
struct HWND__{int unused;}; typedef struct HWND__ *HWND;
所以HWND
類型是真正的類型「指針到HWND__
」。但是,從CreateWindow()
等函數獲得的值HWND
實際上並不是指向任何內容的指針。
但調試器會嘗試找出在結構中的unused
成員的值,但不能做到這一點:
您也將看到這些類型的錯誤時觀察的變量類型信息不正確或缺失。
1
這是一個C++風格的項目嗎?
調試器通常使用「???」字符串,當它能夠評估表達式但不能獲取顯示的特定部分的任何類型信息時。這通常是因爲缺少或不正確的PDB符號。
如果表達式訪問損壞的數據(overriten虛擬表或RTTI),可能會出現這種情況。但我不會100%知道這是否屬實。
1
通常這意味着指針或引用指向無法訪問的內存,因此無法獲取值。例如,如果你有一個應該指向Foo的指針,那麼調試器通常會將指針指向的位作爲Foo進行解釋 - 指針是否有效。但是在某些情況下,野生指針可能指向一個甚至沒有映射到進程空間的位置。在這種情況下,調試器無法獲取這些位。
相關問題
- 1. Visual Studio 2010觀察窗口?
- 2. Visual Studio 2017社區觀察窗口
- 3. Visual Studio觀察窗口圖標代表什麼?
- 4. 問號是什麼意思?
- 5. 語句中的問號和冒號是什麼意思?這是什麼意思?
- 6. 「Decimal?」中的問號是什麼?意思?
- 7. IntelliJ工程窗口中的勾號是什麼意思?
- 8. Visual Studio安裝的產品版本號是什麼意思?
- 9. 「[::]:端口號」是什麼意思?
- 10. 在Visual Studio中展開觀察窗口中的所有值
- 11. 等效於GUD中的Visual Studio的觀察窗口
- 12. Visual Studio 2010中的多行觀察窗口?
- 13. 在Visual Studio觀察窗口中更改DateTime的默認顯示
- 14. Visual Studio:觀察窗口:C++:爲什麼垃圾字符類型的成員?
- 15. form action =「?login」:問號是什麼意思?
- 16. 這兩個問號是什麼意思?
- 17. VC++ Watch窗口中的{???}是什麼意思?
- 18. &符號是什麼意思?
- 19. 冒號是什麼意思?
- 20. 符號「⊇」是什麼意思?
- 21. 什麼是 「窗口= qobject_cast <QWindow *>(根)」 是什麼意思?
- 22. 符號「#!」是什麼意思?在Python中的意思是?
- 23. Visual Studio Code中的彩色標記是什麼意思?
- 24. 是什麼意思:是什麼意思?
- 25. Visual Studio符號緩存中的目錄名稱D0C3BDDD4ADD4E87B2B5E803303B8D772是什麼意思?
- 26. 而在Visual Studio調試,什麼是雙[]的意思是
- 27. Linux中的符號^ \意思是什麼
- 28. TSQL中的「#」符號是什麼意思?
- 29. JavaScript中的$符號是什麼意思?
- 30. PowerShell中的&符號是什麼意思?
不正確。該???錯誤字符串與錯誤類型信息有關。如果它不能評估表達式,它將提供更有用的錯誤消息 – JaredPar 2010-10-22 21:52:51
@JaredPar:我的措辭有點偏離。我的意思是調試器無法弄清它的價值。 – 2010-10-22 22:03:48
Gotcha。編輯版本解決了混亂。但它確實顯示???對於不好的類型和不好的價值。 – JaredPar 2010-10-22 22:07:33