2010-01-21 5 views
18

Lorsque j'atteins une instruction assert normale pendant le débogage avec Visual Studio, j'ai l'option d'entrer dans le débogueur pour voir la totalité de la trace de la pile et les variables locales, pas seulement le message assert. Est-il possible de faire cela avec Qt Creator + mingw32 et Q_ASSERT/Q_ASSERT_X?Débogage des assertions dans Qt Creator

Est-il possible de faire cela avec Qt Creator + mingw32 et Q_ASSERT/Q_ASSERT_X?

Répondre

7

Vous pouvez installer un gestionnaire pour les messages/avertissements que Qt émet, et faire votre propre traitement d'entre eux. Voir la documentation pour qInstallMsgHandler et l'exemple qu'ils donnent là. Il devrait être facile d'insérer une pause dans un gestionnaire de message personnalisé (ou, en effet, juste affirmer vous-même à ce moment-là). Le seul petit inconvénient est que vous serez un peu plus loin dans la pile que là où l'erreur s'est réellement produite, mais il est simple de monter la pile jusqu'à ce que vous soyez à l'image correcte.

+3

J'ai utilisé l'exemple avec __asm ​​("int3") avant l'abandon () appelez et cela fonctionne très bien. –

2

C'est possible. J'ai codé une fonction BreakInDebugger à la main et une macro assert qui appelle la fonction.

par exemple: #define MyAssert(X) (BreakInDebugger();Q_ASSERT(X))

16

C'est possible. D'une manière ou d'une autre, la fonctionnalité a cessé de fonctionner pour moi, mais fondamentalement, ce que vous voulez, c'est d'arrêter sur qFatal(). Pour ce faire, dans qt Creator, allez dans Outils -> Options -> Débogueur -> GDB et sélectionnez "Arrêt lorsqu'un qFatal est émis"

+0

On dirait que c'est la bonne option (pourquoi n'est-il pas activé par défaut?), Mais cela ne semble pas fonctionner non plus pour moi. –

+1

Le volet de configuration est appelé "GDB Extended" dans Qt Creator 5.3 et éventuellement plus tard. –

+0

A travaillé pour moi: Qt Creator 5.3 (32) + bibliothèques Qt 5.9 (64) + MSYS2/MinGW (64). –

Questions connexes