2017-07-12 2 views
0

mon application Qt (QML/C++) tombe en panne et je ne trouve pas la raison pour laquelle. J'ai essayé de sortir beaucoup d'informations mais une connexion signal/slot provoque probablement un crash. J'ai passé de nombreuses heures à essayer de trouver la raison mais j'ai échoué.Débogage d'une application Qt sous Windows

Le seul bon point est que je peux reproduire le crash quand je le veux.

Malheureusement je ne sais pas chaud pour utiliser le débogueur GDB inclus. C'est la sortie que j'ai eu: Qt Application Crash

Comment puis-je trouver à partir de ce qui est arrivé et où? J'ai besoin de trouver au moins la fonction, dans laquelle mon application s'est écrasée.

Ou quoi d'autre pourrais-je essayer? Malheureusement, je ne peux pas désactiver les connexions signal/slot ou les fonctions associées, parce que je ne peux pas arriver au point où il se bloque.

+0

C'est une énorme chose que vous demandez! Peut-être le tutoriel [Qt officiel sur Qt Creator] (http://doc.qt.io/qtcreator/creator-debugging.html) et [cette page] (https://www.tutorialspoint.com/gnu_debugger/what_is_gdb.htm) peut vous aider :) – Xatyrian

+0

Avez-vous compilé Muzika et Qt en mode débogage? Cela vous permettrait d'inspecter le code source au lieu du code de désassemblage, ce qui facilite grandement le débogage. Une autre suggestion est de créer un [mcve]. Votre problème semble être lié à la lecture de certains médias. – m7913d

+0

Muzika est mon application et je l'ai compilé en mode débogage. Mais l'accident semble être dans QtCore.dll que j'ai téléchargé comme une version. N'y a-t-il vraiment aucune chance de savoir quel appel exact a causé le crash de la bibliothèque? Je n'ai pas envie de compiler tout le Qt. Quoi qu'il en soit, le problème n'est pas lié à un certain fichier multimédia, mais cela arrive si un fichier avec une feuille CUE atteint la fin d'une partie, puis il doit s'arrêter. Si j'arrête la lecture manuellement, cela fonctionne, mais si je le fais par programmation (la position actuelle est à la fin de la partie), alors il se bloque. Et je ne peux pas savoir pourquoi. – JeCh

Répondre

1

Qt a détaillé la documentation sur la façon d'installer un débogueur trouvé ici: QtCreator Debugger

MingW a un GDB qui peut être utilisé pour déboguer mieux l'application. Vous pouvez également utiliser CDB pour déboguer, tout dépend de votre préférence.

Une fois installé, vous pourrez définir des points d'arrêt et vérifier les informations sur les variables pour voir où votre programme plante en utilisant la vue Debugger dans QtCreator.

+0

J'ai mis en place GDB et corrigé Python (qui causait des plantages de GDB) et maintenant cela fonctionne. Mais encore, si une exception se produit, je peux seulement voir que c'est arrivé par exemple dans qlist.h. Mais je n'ai toujours aucune idée d'où le problème est survenu dans mon code. Est-il possible de retracer quel appel de mon code a provoqué l'exception? – JeCh