Tôi có cảm giác lạ như đây là sự cố gần đây và xảy ra trên hai máy tính riêng biệt.Visual C++ 2010 từ chối hiển thị std :: string value khi gỡ lỗi. Hiển thị <Bad Ptr>
Khi tôi đang gỡ lỗi và cố xem xét giá trị của chuỗi std :: STL, nó hiển thị dưới dạng giá trị. Nó nói kích thước của nó là 15 và công suất là một số số lượng lớn bị cắt xén.
Tất cả các giá trị mảng đều nói CXX0030: Lỗi: biểu thức không thể được đánh giá. Điều này là cực kỳ bực bội và tôi vẫn có thể truy cập các giá trị chuỗi trong khi gỡ lỗi nếu tôi gọi c_str trên chuỗi và gán nó vào một char * hoặc sử dụng biểu thức xem nếu tôi cần, nhưng nó rất tẻ nhạt và làm cho cuộc sống rất khó khi gỡ lỗi các vấn đề phức tạp trong 3 ngày liền.
Nội dung các hộp chứa STL khác chỉ hiển thị tốt.
Điều này xảy ra trên nhiều dự án trên hai máy tính khác nhau và tôi chắc chắn rằng tôi có tất cả các tùy chọn gỡ lỗi được đặt cho dự án. Không có tối ưu hóa, và tạo ra thông tin gỡ lỗi cho chắc chắn.
để trả lời câu hỏi này chúng ta cần một số mã compilable nơi lỗi này xảy ra. –
Điều này xảy ra trên tất cả các mã không có vấn đề gì. Nếu tôi đang sử dụng std :: string nó hiển thị như trong trình gỡ rối. Đây có thể là một số vấn đề với cấu hình dự án của tôi và một số tối ưu hóa được kích hoạt ở đâu đó hoặc các biểu tượng gỡ lỗi của tôi không được tải đúng cách. Tôi đã thực hiện một số tìm kiếm trên Google và chưa tìm thấy câu trả lời. Tôi cũng tìm thấy một cái gì đó về autoexp.dat đó là gỡ lỗi hình dung dữ liệu để làm cho các loại phức tạp dễ dàng debuggable. Tôi nghĩ rằng autoexp.dat sẽ nhận được xung quanh tối ưu hóa chuỗi nhỏ bằng cách nào đó và hiển thị nó đúng trong mọi trường hợp. Tôi sẽ xem xét nó một số chi tiết. –
iseletsky
Bạn có thể sử dụng const char * test = str.c_str(); Sau khi các giá trị này tuyên bố sẽ được avaible cho trình gỡ lỗi để hiển thị. –