0
votes

Valeur de retour non affichée par QT Creator Debugger

mon environnement:

  • Windows 10, 64 bits
  • Mise à jour de Microsoft Visual Studio 2015 3
  • QT 5.6.2
  • QT Creator 4.8.1

    Selon la documentation de Creator Qt, il convient de disposer de l'ébrévage de Qt Creator de montrer la valeur renvoyée par une fonction lors de la sortie de la fonction. Extraits de http: // doc. qt.io/qtcreator/creator-debug-mode.html#local-variables-and-fonction-paramètres :

    La vue Locaux est composée du volet locaux et de la valeur de retour Volet (caché lorsqu'il est vide).

    Chaque fois qu'un programme s'arrête sous la commande du débogueur, il récupère des informations sur le cadre de pile le plus haut et l'affiche dans la vue Locaux. Le volet des locaux affiche des informations sur les paramètres de la fonction dans ce cadre ainsi que les variables locales. Si la dernière opération du débogueur retournait d'une fonction après avoir appuyé sur Maj + F11, le volet Valeur de retour affiche la valeur renvoyée par la fonction.

    Le problème est que je ne peux pas voir Le volet de retour (et donc la valeur renvoyée par la dernière fonction).

    Voici un exemple minimal:

    Après avoir compilé un projet minimal, j'ai défini un point d'arrêt dans principal () , lorsque foo () est sur le point d'être appelé et de démarrer le débogueur (F5). Le débogueur s'arrête correctement au point d'arrêt:

     Entrez la description de l'image ici

    i Donnez la commande pas dans (f11) à le débogueur. Dans le débogueur, je peux voir que le contrôle atteint la fonction appelée, foo () :

     Entrez la description de l'image ici

    Maintenant pour l'étape critique. Je donne la commande sortez (Shift + F11) au débogueur. Comme prévu, le contrôle retourne à l'appelant ( principal () ), mais la valeur renvoyée par foo () n'est pas affichée:

    entrez Description de l'image ici

    Alors, comment puis-je voir la valeur de retour?

    Voici le contenu de mon Compile Sortie Pane: xxx


4 commentaires

Le code semble être optimisé par le compilateur, voudriez-vous nous montrer la ligne de commande utilisée par cl -c ... dans l'onglet compilation ?


Je viens d'ajouter le contenu de ma Compiler la sortie dans mon message d'origine.


Vous pouvez désactiver l'optimisation du code en ajoutant ceci dans votre fichier .pro: qmake_cxxflags_debug + = -od (avec configuration de débogage, pour le fichier source C ++)


Comme prévu, ajouter -OD à qmake_cxxflags_debug n'a pas aidé: le comportement est exactement le même que dans mon message d'origine. (Comme prévu, car -OD est la valeur par défaut.)


3 Réponses :


-1
votes

En haut du fichier, vous devez inclure la Qdebug de cette manière:

Inclure

et donc avant le retour, vous devez imprimer la valeur renvoyée par la fonction FOO de cette manière:

qdebug () << valeur;


1 commentaires

Impression sur la console, comme vous le suggérez, peut être utile, mais est une question complète. Ce que j'aimerais voir, c'est la valeur de retour de chaque fonction, car le code est en cours de débogage. Cela est possible dans la plupart des débuggeurs et devrait également être possible dans Qt Creator (selon le manuel QT Creator), mais pour une raison quelconque ne fonctionne pas pour moi.



-1
votes

Fonctionne pour moi, après l'arrêt du débogueur de la ligne 8, F10 (pas sur), et comme vous pouvez le constater que la valeur de retour est affichée sur le panneau de droite Entrez la description de l'image ici


1 commentaires

Ce que vous voyez est a , une variable locale qui se trouve être attribuée à la valeur renvoyée de foo () . Le débogueur a une fonctionnalité qui devrait vous permettre de voir la valeur renvoyée par une fonction lorsque vous quittez la fonction.



0
votes

Ceci a maintenant été reconnu comme un bogue dans Qt Creator: https: //bugreports.qt .io / Browse / QTCreatorBug-21913


0 commentaires