Tôi đã chạy vào một ngoại lệ và nhìn vào các biến trong cửa sổ xem, tôi thấy một số dấu hỏi (???). Điều này có nghĩa là nó trỏ đến một địa chỉ không hợp lệ?Dấu hỏi (???) trong cửa sổ xem Visual Studio có nghĩa là gì?
Trả lời
Điều đó có nghĩa là trình gỡ lỗi không thể tìm ra giá trị của nó.
Ví dụ: bạn thấy điều này một chút nếu mã của bạn liên quan đến HWND
s. Nếu bạn xem xét thông qua các tập tin tiêu đề Windows, nó được định nghĩa như thế này thông qua một vĩ mô:
struct HWND__{int unused;}; typedef struct HWND__ *HWND;
Vì vậy, các loại HWND
thực sự là loại "con trỏ đến một HWND__
". Tuy nhiên, các giá trị HWND
bạn nhận được từ các chức năng như CreateWindow()
không thực sự trỏ đến bất kỳ thứ gì.
Nhưng debugger sẽ cố gắng tìm ra các giá trị của unused
thành viên trong các cấu trúc, nhưng không thể làm điều đó:
Bạn cũng sẽ thấy các loại lỗi khi theo dõi biến có thông tin loại bị thiếu hoặc bị thiếu.
Đây có phải là dự án kiểu C++ không?
Trình gỡ lỗi thường sử dụng "???" chuỗi khi nó có thể đánh giá một biểu thức nhưng không thể thu được bất kỳ thông tin kiểu nào cho một phần cụ thể của màn hình. Điều này thường xảy ra do thiếu hoặc không chính xác các ký hiệu PDB.
Có khả năng một cách để điều này xảy ra nếu biểu thức đang truy cập dữ liệu bị hỏng (bảng ảo được ghi đè hoặc RTTI). Nhưng tôi không biết 100% nếu điều đó đúng.
Thông thường nó có nghĩa là con trỏ hoặc tham chiếu trỏ đến bộ nhớ không thể tiếp cận, và do đó nó không thể có được giá trị để trình bày. Ví dụ, nếu bạn có một con trỏ được cho là trỏ đến một Foo, trình gỡ lỗi thường sẽ giải thích các bit mà con trỏ trỏ tới như một Foo - cho dù con trỏ có hợp lệ hay không. Nhưng trong một số trường hợp, một con trỏ hoang dã có thể trỏ đến một vị trí thậm chí không được ánh xạ trong không gian quy trình. Trong trường hợp đó, trình gỡ lỗi không thể nhận được các bit.
- 1. Câu hỏi Javascript - "cửa sổ" là gì?
- 2. gì dấu hỏi đôi có nghĩa là trong C#
- 3. Các biến đặc biệt nào có sẵn trong cửa sổ xem Visual Studio trong .NET?
- 4. Dấu backtick trong tên loại có nghĩa là gì trong trình gỡ rối Visual Studio?
- 5. Cửa sổ Visual Studio Breakpoints: TreeView hiển thị những gì?
- 6. Window.jQuery và cửa sổ. $ Có nghĩa là gì?
- 7. Cái gì \? (chuỗi dấu chấm hỏi dấu chấm hỏi) có nghĩa là chuỗi thoát?
- 8. Cửa sổ Visual Studio Watch có màu xám?
- 9. Không có cửa sổ bộ nhớ trong Visual Studio 2010
- 10. Cửa sổ định nghĩa mã trong Visual C++ 2008 Express là gì?
- 11. Dấu hỏi có ý nghĩa gì trong GSP/Grails?
- 12. Mục đích của cửa sổ Gọi ngăn xếp trong Visual Studio là gì?
- 13. Dấu chấm hỏi và dấu hai chấm trong câu? nó có nghĩa là gì?
- 14. "?" biểu tượng (dấu chấm hỏi) có nghĩa là trong Scala?
- 15. Visual Studio Xem cửa sổ không có tính đến usings tài khoản
- 16. Câu hỏi cú pháp PHP: Dấu chấm hỏi và dấu hai chấm nghĩa là gì?
- 17. Chia cửa sổ chỉnh sửa trong Visual Studio
- 18. Không có cửa sổ chủ đề Visual Studio 2010 Ultimate
- 19. Làm sạch cửa sổ ngay lập tức trong Visual Studio
- 20. biểu Visual Studio chứa một thuật ngữ có tên là "bởi" không thể được đánh giá trong cửa sổ xem
- 21. Visual Studio 2010 - Cửa sổ bán trong suốt
- 22. Visual Studio - Mở một tệp SQL với SQL Management Studio trong cửa sổ SSMS hiện có?
- 23. Erlang: Cú pháp chấm hỏi có nghĩa là gì?
- 24. Cách ghi vào cửa sổ Output trong Visual Studio?
- 25. Lỗi dấu phẩy động -1. # J có nghĩa là gì?
- 26. Visual Studio DTE là gì?
- 27. Biểu tượng hình con dao trong rãnh trong Visual Studio 2008 có nghĩa là gì?
- 28. Dấu ngã (~) có nghĩa là gì trong CSS
- 29. Dấu mũ (‘^’) có nghĩa là gì trong C++/CLI?
- 30. Làm phẳng các thành viên được thừa kế trong cửa sổ Xem của Visual Studio?
Không đúng sự thật. Các ??? chuỗi lỗi có liên quan đến thông tin loại xấu. Nếu nó không thể đánh giá biểu thức nó sẽ cung cấp một thông báo lỗi hữu ích hơn – JaredPar
@ JaredPar: từ ngữ của tôi là một chút tắt. Những gì tôi có nghĩa là trình gỡ lỗi không thể tìm ra giá trị của nó. –
Gotcha. Phiên bản đã chỉnh sửa đã xóa đi sự nhầm lẫn. Nhưng nó hiển thị ??? cho các loại xấu và giá trị xấu. – JaredPar