2010-05-13 7 views
2

Je viens d'installer QT 4.6 sur Snow Leopard 10.6.3. J'ai écrit un programme très simple. Je peux générer un projet xcode en utilisant qmake, mais je ne peux pas entrer dans la fonction QT. Comment puis-je le configurer?Mise en place de qt pour le débogage xcode

+0

Voulez-vous entrer dans le code source Qt ou le code Qt que vous utilisez? –

+0

Je veux entrer dans le code source Qt que j'utilise. Disons que j'ai une boîte de dialogue Qt par défaut dans mon application, j'aimerais voir comment l'objet est construit, comment le dialogue est amené au premier plan. – Quincy

Répondre

2

Par défaut, qt est construit avec une librairie de débogage et une librairie non-debug. C'est ma compréhension. Par exemple,

% ls /Library/Frameworks/QtCore.framework/ 
Contents/   [email protected]   [email protected]    QtCore.prl   [email protected]  QtCore_debug.dSYM/ QtCore_debug.prl Versions/ 

Aussi, mon défaut de construire source de la branche Qt 4.7 a aussi les * _DEBUG libs.

Mise en place pour Xcode est le gâteau, vous venez de mettre en place votre projet et

% qmake -spec macx-xcode 

Ce -spec est la valeur par défaut pour la distribution de mac officiel, mais si vous construisez votre propre de la source par défaut est macx- g ++ qui crée un projet Makefile.

Cela génère un MyProject.xcodeproj qui est préconfiguré pour lier tous les frameworks Qt nécessaires, définit les chemins et a une cible Release build et Debug définie avec les mêmes options que les SDK officiels.

Tout cela est en supposant que vous avez votre fichier de projet qt mis en place, si vous avez besoin pour générer cette première à partir d'un répertoire source première:

% qmake -project 

fonctionne Debugging « de la boîte » pour ces générés *. Fichiers xcodeproj. Cependant, il y a un petit "accroc". Comme Qt est rempli de types de données personnalisés, Xcode ne sait pas comment afficher leurs "valeurs" dans le volet de résumé du débogueur. Vous ne pouvez donc pas voir quelle valeur a un QString, par exemple.

Il existe une méthode pour entrer custom macros pour l'affichage, mais j'ai trouvé que souvent (toujours?) Ne fonctionnent pas pour QObjects. Pour que cela fonctionne, j'ai démarré un projet qui utilise les callbacks du débogueur de xcode (également mentionné dans l'article lié ci-dessus, bien que leur exemple ne fonctionne même pas o.O). Je l'appelle Qt4DataFormatters.

Je viens juste de commencer et j'ai ajouté des types en fonction des besoins.Il est simple d'en créer un en utilisant les fonctions existantes comme modèle.

1

Je ne l'ai pas essayé sur Mac, mais sur Linux vous devez prendre le processus suivant:

D'abord, vous devez configurer Qt afin qu'il a des symboles de débogage disponibles pour vous:

./configure -debug-and-release separate-debug-info # other options 

Avec les symboles de débogage disponibles, vous devriez maintenant être en mesure d'obtenir des traces de pile valides.

Lors de la construction de votre application avec qmake, vous devez avoir la debug (ou debug_and_release) drapeau défini dans votre fichier de projet:

CONFIG += debug 

Une fois que vous avez fait cela, vous devez seulement besoin de dire le débogueur où la source Qt se trouve:

(gdb) dir /path/to/qt/src 

Après cela, list devrait vous montrer le code source Qt réelle. Vous devrez peut-être ajouter des répertoires supplémentaires dans le répertoire src pour que le débogueur puisse tout récupérer.