2009-10-20 3 views
6

De nombreuses classes Qt utilisent pimpl, elles sont donc très opaques pour le débogueur de VS. Ceci est gênant quand je veux vérifier l'état interne de Qt pour voir si mon code ne fonctionne pas correctement ou si j'ai de mauvaises attentes. J'utilise le complément Qt VS (1.1.0), mais cela ne semble pas aider.Comment puis-je voir le contenu des objets Qt pendant le débogage?

Des idées?

Mise à jour

Mon fichier autoexp.dat est rempli de choses Qt, mais je ne suis toujours pas en mesure de regarder à l'intérieur des classes plus lourdes (QWidget, QTcpSocket, etc.).

Je peux voir le contenu des classes plus simples, donc le fichier autoexp.dat ci-dessous semble fonctionner, mais essayer de regarder dans un QWidget ne fonctionne pas.

Mise à jour 2

Pour une raison quelconque, après avoir lu les commentaires et la recherche plus, il fonctionne, et je peux voir les choses de données.

Je ne sais pas ce qui s'est passé entre-temps (quand j'ai juste travaillé et je l'ai ignoré), mais j'ai eu des problèmes pour voir les données auparavant.

J'accepte la réponse «juste fonctionne», parce que je ne peux pas supprimer une question bountied et c'est la réponse la plus proche disponible. (L'autoexp-dat formate simplement les lignes de débogage, en utilisant des données qui sont déjà visibles si l'on creuse)

+3

Que diriez-vous de passer à Qt Creator au lieu de VS? :-) – ephemient

+0

C'est le même problème avec QtCreator mais oui vous devriez essayer. –

+3

Ce n'est pas le même problème, Qt Creator ajoute quelques macros de débogage pour 'gdb' à votre exécutable. Vous pouvez donc voir le contenu de nombreux objets Qt. –

Répondre

-1

Il est certainement possible de regarder dans le pimpl lorsque Qt est compilé avec des informations de débogage. Pas sûr de VS, mais avec gdb, Just Works ™.

+0

Il fait ça ici aussi. Je me demande quel était le problème? Peut-être mauvaise pile ou de la corruption lorsque j'ai essayé de déboguer précédemment. Merci de m'avoir fait regarder à nouveau. :) – Macke

1

Vous devez ajouter des dumpers personnalisés pour votre débogueur.

Il existe des versions prédéfinies pour GDB. Vous devrez peut-être lancer le vôtre pour d'autres débogueurs, même si pour Visual Studio, il est possible d'obtenir des résultats décents assez facilement en modifiant le fichier autoexp.dat. Il y a beaucoup de ressources en ligne pour savoir comment changer ce fichier.

+0

Je connais ce fichier. Je ne savais pas que je pourrais l'utiliser pour fournir plus d'informations que ce qu'avait déjà le débogueur. Je vais regarder dedans. – Macke

+0

Droit - vous ne pouvez pas appeler de méthodes, mais de nombreux objets Qt ont des données intéressantes cachées - souvent derrière le 'd' ptr, vous pouvez donc afficher ces données. – Thomi

+0

Mais n'ai-je pas besoin d'ajouter manuellement tout Qt à autoexp.dat? C'est un peu trop de travail en ce moment. ;) – Macke

3

Cela pourrait aider http://daniel-albuschat.blogspot.com/2008/02/qt-debugging-with-visual-studio-2005.html

IIRC l'installation de Qt pour Windows inclut un fichier autoexp.dat -
Correction, il fait partie du l'qt-vs-addin

+0

Le lien avait un bon point sur l'exécution en tant qu'administrateur sur Vista, mais je manque en quelque sorte les classes les plus lourdes (QWidget, etc). Mon autoexp.dat avait déjà le contenu de qt-vs-addin. Peut-être que c'est un problème avec mes fichiers de symboles pour QT. – Macke

0

Il semble que vous pourriez être hors de la chance.

Actuellement cette page a la liste la plus complète des macros pour QT wariables qui peuvent être ajoutés à la autoexp.dat: QT with Visual Studio 2008 (updated for Qt 4.5.2)

ActiveQt sons aussi prometteurs, mais il pourrait être un peu d'un surpuissant pour vous. Au-delà de cela, vous devrez rouler vos propres expressions, ou peut-être écrire un visualiseur Visual Studio Debugger. (plus à ce sujet est sur CodeProject ou MSDN)

Comme il n'y a rien de tel là-bas, il pourrait être une bonne occasion pour le développement de zéro.:)

Questions connexes