2009-10-20 9 views
6

Muchas clases de Qt usan pimpl, por lo que son muy opacas para el depurador de VS.¿Cómo veo el contenido de los objetos Qt durante la depuración?

Esto es molesto cuando quiero verificar un estado interno de Qt para ver si mi código lo está haciendo mal o si tengo expectativas erróneas de cómo están las cosas.

Estoy usando el complemento Qt VS (1.1.0), pero eso no parece ayudar.

¿Alguna idea?

actualización

Mi archivo autoexp.dat está lleno de cosas Qt, pero todavía no soy capaz de mirar dentro de las clases más pesadas (QWidget, QTcpSocket, etc).

Puedo ver el contenido de las clases más simples, por lo que el autoexp.dat a continuación parece estar funcionando, pero intentar mirar dentro de un QWidget no funciona.

Actualización 2

Por alguna razón, después de leer los comentarios y mirando más, que hace el trabajo, y puedo ver las cosas de datos.

No sé qué sucedió mientras tanto (cuando trabajé y lo ignoré), pero tuve problemas para ver los datos antes.

Estoy aceptando la respuesta "solo funciona", porque no puedo eliminar una pregunta generosa y esa es la respuesta más cercana disponible. (El autoexp-dat simplemente formatea las líneas de depuración, utilizando datos que ya están visibles si se profundiza)

+3

¿Qué hay de cambiar a Qt Creator en lugar de VS? :-) – ephemient

+0

Es el mismo problema con QtCreator, pero sí, deberías intentarlo. –

+3

No es el mismo problema, Qt Creator agrega algunas macros de depuración para 'gdb' a su ejecutable. Entonces puedes ver el contenido de muchos objetos Qt. –

Respuesta

-1

Definitivamente es posible examinar el pimpl cuando Qt se compila con la información de depuración. No estoy seguro acerca de VS, pero con gdb es Just Works ™.

+0

Lo hace aquí también. Me pregunto cuál fue el problema? Tal vez una mala pila o algo de corrupción cuando intenté depurar previamente. Gracias por hacerme mirar de nuevo. :) – Macke

1

Necesita agregar volquetes personalizados para su depurador.

Hay unidades preconstruidas para GDB. Puede que tenga que rodar el suyo para otros depuradores, aunque para el estudio visual es posible obtener algunos resultados decentes con bastante facilidad al ajustar el archivo autoexp.dat. Hay muchos recursos en línea sobre cómo cambiar este archivo.

+0

Sé sobre ese archivo. No sabía que podría usarlo para proporcionar más información que la que ya tenía el depurador. Lo miraré. – Macke

+0

Derecha: no puede llamar a ningún método, pero muchos objetos Qt tienen los datos interesantes ocultos, a menudo detrás de la función 'd' ptr, por lo que puede mostrar esa información. – Thomi

+0

¿Pero no necesito agregar manualmente todo Qt a autoexp.dat? Es un poquito demasiado trabajo en este momento. ;) – Macke

3

Esto podría ayudar http://daniel-albuschat.blogspot.com/2008/02/qt-debugging-with-visual-studio-2005.html

IIRC la instalación de Qt para Windows incluye un archivo autoexp.dat -
corrección, es parte de la del qt-vs-addin

+0

El enlace tenía un buen punto acerca de ejecutar como administrador en Vista, pero me faltan las clases más pesadas (QWidget, etc.). Mi autoexp.dat ya tenía el material de qt-vs-addin. Tal vez es algo malo con mis archivos de símbolos para QT. – Macke

0

Parece que podría estar fuera de suerte.

Actualmente esta página tiene la lista más completa de macros para wariables QT que se pueden agregar a la autoexp.dat: QT with Visual Studio 2008 (updated for Qt 4.5.2)

ActiveQt también suena prometedor, pero podría ser un poco de una exageración para usted.

Más allá de esto, debería desplegar sus propias expresiones, o quizás escribir Visual Studio Debugger Visualizer. (más sobre eso está en CodeProject o MSDN)

Dado que no hay nada de eso por ahí, podría ser una buena oportunidad para el desarrollo desde cero.:)

Cuestiones relacionadas