Trouve la ligne de code dans le code source Qt qui affiche le message "QPaintDevice: Must construct a QApplication before a QPaintDevice", et pose un breakpoint. Execute, puis remonte la pile des appels jusqu'à ton code.
Trouve la ligne de code dans le code source Qt qui affiche le message "QPaintDevice: Must construct a QApplication before a QPaintDevice", et pose un breakpoint. Execute, puis remonte la pile des appels jusqu'à ton code.
Bonjour,
j'aimerai bien trouvé la ligne qui m'affiche ce message aurélien mais elle n'est affichée qu'une fois que l'application s'arrête, cad qu'avant mon dernier pas de curseur il n'y a rien dans la console...![]()
Mais je vais voir ce que je peux faire avec Purify, j'espère pouvoir régler ce problème...
Merci. @+. Piefire
Non non. Dans le code source je parle, à priori dans QPaintDevice.cpp. Ouvre ce fichier dans VC++, trouve la ligne qui affiche le message, et pose le breakpoint. Puis relance.
purify ne t'aidera pas.
OK aurélien, le seul problème c'est que je n'ai pas accès à la librairie Qt en debug...! Le problème semble, comme tu me l'as déjà dis il y a quelques posts
, venir de la déclaration d'un objet static. Mon cas n'est pas isolé (sur le net) mais les réponse ne fusent pas.
Je vais creuser de ce côté là, et dans ce cas croit tu que je doive faire le nécessaire pour pouvoir éxecuter ma lib Qt en debug?
Merci. Piefire
Si tu compiles ton appli en mode debug, tu devrais aussi te lier à la biliothèque Qt debug.
Ben avoir les sources en debug ça aide bien, la preuveTon problème serait déjà résolu. A priori ce serait un object statique héritant de QPaintDevice: QGLPixelBuffer, QImage, QPicture, QPixmap, QPrinter, QWidget.
Tu utilises quelles version de Qt?
Comment puis je faire pour lier ma bibliothèque Qt en Debug? J'utilise Qt 3.3.3...
Pas la peine d'enfoncer le clou aurélien, lol!
Ben faut la reconfigurer et la recompiler en debug. Tu as un outil graphique pour le faire normalement.
Et là c'est le drame...Je travail sous VS par le biais d'une connexion Bureau à distance. C'est pas gagné au niveau des droits!
Quoi qu'il en soit, la semaine prochaine je ne travaillerais pas sur le problème, je vais donc regardé ce qui est faisable et je vous tiendrais au courant dés que je me repenche dessus (à priori à partir du 13).
Je vous remercie encore une fois... @ bientôt.
Piefire
Effectivement, le problème d'un objet statique c'est qu'il est construit avant main(). Par conséquent, on ne peut pas accéder à une erreur dans le constructeur en avançant pas à pas dans le débogueur après le lancement de main().Envoyé par piefire
Dans ce cas, la solution est effectivement de placer un breakpoint sur le message d'erreur, mais pour ça il faut que le code qui génère ce message (la bibliothèque Qt en l'occurrence) soit compilé en mode « debug. »
De manière générale, il faut éviter les objets statiques, car on ne peut pas contrôler leur ordre d'instanciation.
Sinon je ne crois pas qu'on puisse dire que le curseur va « se balader » ici, c'est juste que le programme s'arrête normalement dans le constructeur d'un objet statique.
Tu peux aussi lancer ton programme via F11 (pas à pas détaillé) au lieu de F5 (execute normalement) pour tracer l'exécution depuis le début en pas à pas. Mais si tu es en release, je ne sais pas trop ce que ça va donner...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager