2009-10-20 2 views
6

Многие классы Qt используют pimpl, поэтому они очень непрозрачны для отладчика VS.Как я могу увидеть содержимое объектов Qt во время отладки?

Это назойливое, когда я хочу проверить какое-то внутреннее состояние Qt, чтобы узнать, делает ли мой код неправильным или у меня неправильные ожидания относительно того, как обстоят дела.

Я использую надстройку Qt VS (1.1.0), но это, похоже, не помогает.

Любые идеи?

Update

Мой файл autoexp.dat заполнен Qt вещи, но я до сих пор не в состоянии смотреть в более тяжелых классов (QWidget, QTcpSocket и т.д.).

Я вижу более простое содержимое классов, поэтому, как представляется, autoexp.dat работает, но попытка заглянуть внутрь QWidget не работает.

Update 2

По какой-то причине, прочитав комментарии и смотреть больше, он делает работу, и я могу видеть вещи данных.

Я не знаю, что произошло в среднее время (когда я просто работал и игнорировал его), но у меня были проблемы с просмотром данных раньше.

Я принимаю ответ «just works», потому что я не могу удалить заданный вопрос, и это самый близкий ответ. (Autoexp-dat просто красиво форматирует отладочные строки, используя данные, которые уже видны, если один выкапывает)

+3

Как насчет переключения на Qt Creator вместо VS? :-) – ephemient

+0

Это та же проблема с QtCreator, но да, вы должны попробовать. –

+3

Это не та же проблема, Qt Creator добавляет несколько макросов отладчика для 'gdb' к вашему исполняемому файлу. Таким образом, вы можете видеть содержимое многих объектов Qt. –

ответ

-1

Это определенно возможно изучить в pimpl, когда Qt скомпилирован с отладочной информацией. Не уверен в VS, но с gdb это Just Works ™.

+0

Он делает это тоже. Интересно, в чем проблема? Возможно, плохой стек или некоторая коррупция, когда я пытался отлаживать ранее. Спасибо, что заставил меня снова взглянуть. :) – Macke

1

Вам нужно добавить пользовательские самосвалы для вашего отладчика.

Есть встроенные устройства для GDB. Возможно, вам придется сворачивать свои собственные для других отладчиков, хотя для визуальной студии можно легко получить некоторые приличные результаты, изменив файл autoexp.dat. Есть много ресурсов в Интернете, как изменить этот файл.

+0

Я знаю об этом файле. Я не знал, что могу использовать его, чтобы предоставить больше информации, чем уже имел отладчик. Я посмотрю. – Macke

+0

Вправо - вы не можете вызывать какие-либо методы, но многие объекты Qt имеют скрытые интересные данные - часто позади 'd' ptr, поэтому вы можете показать эти данные. – Thomi

+0

Но не нужно ли вручную добавлять все Qt в autoexp.dat? На данный момент это слишком много работы. ;) – Macke

3

Это может помочь http://daniel-albuschat.blogspot.com/2008/02/qt-debugging-with-visual-studio-2005.html

IIRC установки в Qt для Windows, включает в себя autoexp.dat файл -
Correction, это часть в qt-vs-addin

+0

Ссылка имела хорошее представление о запуске в качестве администратора на Vista, но я вроде как не хватает более тяжелых классов (QWidget и т. Д.). У моего autoexp.dat уже есть материал из qt-vs-addin. Возможно, это что-то не так с моими символьными файлами для QT. – Macke

0

Похоже, что вы можете быть не повезло.

В настоящее время эта страница имеет наиболее полный список макросов для QT wariables, которые могут быть добавлены к autoexp.dat: QT with Visual Studio 2008 (updated for Qt 4.5.2)

ActiveQt также звучит многообещающе, но это может быть немного излишним для вас.

Помимо этого вам нужно будет свернуть свои собственные выражения или, возможно, написать Visualizer Visualizer Visual Studio. (подробнее об этом на CodeProject или MSDN)

Поскольку нет ничего подобного, это может быть хорошей возможностью для развития с нуля.:)

Смежные вопросы