2010-11-27 4 views
3

Je suis en train de développer une application dans Qt et j'ai des problèmes pour déboguer l'application afin de trouver les erreurs qui bloquent mon application avec des erreurs d'exécution. Des erreurs telles que l'accès au tableau hors limites ou l'accès aux pointeurs erronés.Qt: Recherche de fuites de mémoire et d'erreurs

QT Creator ne reconnaît tout simplement pas cette erreur d'exécution. Tout ce que j'ai est le code de sortie, et parfois un message d'échec d'affirmation dans la sortie de l'application. Quelque chose comme:

ASSERT failure in QList<T>::operator[]: "index out of range", file c:/Qt/2010.05/qt/include/QtCore/../../src/corelib/tools/qlist.h, line 463 

Comment puis-je trouver le point où cet accès est fait? J'ai essayé d'exécuter gdb sur mon application exécutable, mais après que l'application se termine avec un code d'erreur (03 dans cet exemple ci-dessus), il n'y a pas de backtrace (pas de pile disponible). J'ai VS installé, et parfois il demande de déboguer l'exception (pas ce cas: /) mais même ainsi, ne reconnaît pas les symboles de débogage mingw32 et ne me donne qu'une vue désassemblée.

Idéalement, j'aurais une pile de vidage QT Creator avant que de telles affirmations ne fassent planter mon application. Des conseils?

+2

Le mode débogueur de Qt Creator ne fonctionne pas pour vous? Ce serait bizarre. –

Répondre

2

Si vous avez des problèmes pour le déboguer, essayez de créer votre propre message handling function pour les messages de débogage/d'avertissement de Qt, et de mettre un point d'arrêt dans cette fonction. Ensuite, votre programme devrait s'arrêter chaque fois que l'un de ces messages est imprimé.