2009-10-20 27 views
6

Nhiều lớp Qt sử dụng pimpl, vì vậy chúng rất mờ đục đối với trình gỡ rối của VS.Làm cách nào để xem nội dung của đối tượng Qt trong khi gỡ lỗi?

Điều này thật khó chịu khi tôi muốn kiểm tra một số trạng thái Qt bên trong để xem mã của tôi có làm sai hoặc nếu tôi có kỳ vọng sai về cách mọi thứ đứng vững.

Tôi đang sử dụng bổ trợ Qt VS (1.1.0), nhưng điều đó dường như không giúp ích gì.

Bất kỳ ý tưởng nào?

Cập nhật

tập tin autoexp.dat tôi được lấp đầy với các công cụ Qt, nhưng tôi vẫn không thể nhìn vào bên trong các lớp học nặng (QWidget, QTcpSocket, vv).

Tôi có thể thấy nội dung lớp học đơn giản hơn, vì vậy autoexp.dat bên dưới dường như đang hoạt động nhưng cố gắng xem bên trong một QWidget không hoạt động.

Cập nhật 2

Đối với một số lý do, sau khi đọc ý kiến ​​và tìm hơn, nó làm việc, và tôi có thể nhìn thấy những thứ dữ liệu.

Tôi không biết điều gì đã xảy ra trong thời gian đó (khi tôi vừa làm việc và bỏ qua nó), nhưng tôi đã gặp vấn đề khi xem dữ liệu trước đó.

Tôi chấp nhận câu trả lời "chỉ hoạt động", bởi vì tôi không thể xóa câu hỏi được trả tiền và đó là câu trả lời gần nhất có sẵn. (Autoexp-dat chỉ định dạng khá các dòng gỡ lỗi, bằng cách sử dụng dữ liệu đã có thể nhìn thấy nếu một trong những hình ảnh xuống)

+3

Làm cách nào để chuyển sang Trình tạo Qt thay vì VS? :-) – ephemient

+0

Đó là cùng một vấn đề với QtCreator nhưng có bạn nên cung cấp cho một thử nó. –

+3

Nó không phải là vấn đề tương tự, Qt Creator thêm một vài macro trình gỡ lỗi cho 'gdb' vào tệp thực thi của bạn. Vì vậy, bạn có thể xem nội dung của nhiều đối tượng Qt. –

Trả lời

-1

Chắc chắn có thể nhìn vào pimpl khi Qt được biên dịch với thông tin gỡ lỗi. Không chắc chắn về VS, nhưng với gdb nó Just Works ™.

+0

Nó cũng vậy. Tôi tự hỏi vấn đề là gì? Có lẽ xấu stack hoặc một số tham nhũng khi tôi đã cố gắng để gỡ lỗi trước đó. Cảm ơn vì đã khiến tôi nhìn lại. :) – Macke

1

Bạn cần thêm bộ đổ tùy chỉnh cho trình gỡ lỗi của mình.

Có những cái được tạo sẵn cho GDB. Bạn có thể phải cuộn của riêng bạn cho debuggers khác, mặc dù cho studio trực quan nó có thể để có được một số kết quả khá khá dễ dàng bằng cách tinh chỉnh các tập tin autoexp.dat. Có rất nhiều tài nguyên trực tuyến để thay đổi tệp này.

+0

Tôi biết về tệp đó. Tôi không biết tôi có thể sử dụng nó để cung cấp thêm thông tin so với những gì mà trình gỡ lỗi đã có. Tôi sẽ xem xét nó. – Macke

+0

Quyền - bạn không thể gọi bất kỳ phương thức nào, nhưng nhiều đối tượng Qt có dữ liệu thú vị bị ẩn - thường nằm phía sau 'd' ptr, vì vậy bạn có thể hiển thị dữ liệu đó. – Thomi

+0

Nhưng tôi không cần phải tự thêm tất cả Qt vào autoexp.dat? Đó là một chút quá nhiều công việc vào lúc này. ;) – Macke

3

này có thể giúp http://daniel-albuschat.blogspot.com/2008/02/qt-debugging-with-visual-studio-2005.html

IIRC khi cài đặt Qt dành cho Windows bao gồm một tập tin autoexp.dat -
Correction, nó là một phần của các qt-vs-addin

+0

Liên kết có một điểm tốt về việc chạy với tư cách Quản trị viên trên Vista, nhưng tôi thiếu các lớp nặng hơn (QWidget, v.v.). Autoexp.dat của tôi đã có những thứ từ qt-vs-addin rồi. Có lẽ đó là một cái gì đó sai trái với các tập tin biểu tượng của tôi cho QT. – Macke

0

Nó có vẻ như bạn có thể gặp may.

Hiện tại, trang này có danh sách đầy đủ nhất các macro cho wariables QT có thể được bổ sung vào autoexp.dat: QT with Visual Studio 2008 (updated for Qt 4.5.2)

ActiveQt cũng có vẻ đầy hứa hẹn, nhưng nó có thể là một chút của một overkill cho bạn.

Ngoài việc này, bạn sẽ phải cuộn biểu thức của riêng mình hoặc có thể viết Visual Studio Debugger Visualizer. (thêm về điều đó là trên CodeProject hoặc MSDN)

Vì không có gì giống như vậy, nên đây có thể là cơ hội tốt để phát triển từ đầu.:)

Các vấn đề liên quan