6
votes

Valeur de retour d'une fonction dans Visual Studio

Bonjour,

Je suis très nouveau à utiliser Visual Studio.

J'essaie de déboguer une application. où je suis tombé sur une déclaration comme ci-dessous: xxx

in vs lors de la mise au point sur xxx

IL indique la correspondance valeurs.Mais non des valeurs renvoyées par xxx

Quel est le moyen le plus simple de trouver les valeurs renvoyées par ces fonctions. Excuses si cela semble être un type de cliché d'une requête.Mais je suis complètement nouveau à vs. J'ai besoin d'un meilleur moyen de trouver les valeurs renvoyées sans modifier les fichiers de stockage des valeurs dans certaines variables temporaires.I signifie que je ne dois pas modifier les fichiers.


1 commentaires

Je veux le savoir aussi (si possible pour VS2005). Je pense que votre meilleur pari est d'inspecter la valeur du registre eAx .


4 Réponses :


2
votes

Attribuez-les à un temporaire, comme celui-ci:

const double bat_qty_val = myPart->bat_qty();
const double AUB_val = myPart->AUB();


1 commentaires

ah snap :) +1 pour l'exemple;)



0
votes

Sur le dessus de ma tête et que je suis sûr qu'il y aurait un moyen plus élégant, mais vous pouvez attribuer les valeurs de retour de BAT_QY () et AUB () à une variable temporaire et de les regarder dans le débogueur.


1 commentaires

Voir @vjo Réponse pour un exemple



2
votes

Le moyen le plus rapide est juste d'entrer myPart-> bat_qty () dans la fenêtre immédiate. De cette façon, vous n'avez pas besoin de changer le code.


7 commentaires

Je n'ai pas compris votre réponse. Convient à l'expliquer?


Bien sûr, lorsque Visual Studio a frappé un point d'arrêt (c'est-à-dire lorsque vous êtes en mesure de voir les valeurs des variables en volant la souris sur eux), vous devriez pouvoir voir la fenêtre immédiate dans Visual Studio. (Sinon, ouvrez-le en sélectionnant dans le menu principal Débugou -> Windows -> Immédiat). Dans cette fenêtre, tapez tout ce que vous voulez voir la valeur de - par exemple MyPart-> Bat_qty () et appuyez sur Entrée.


Cette solution présente l'inconvénient que la fenêtre immédiate doit "exécuter" la fonction sur MyPart et, en tant que tel, appliquer ses effets secondaires afin d'imprimer le résultat. Je peux donner un exemple où cela pourrait causer un comportement déroutant à la Lest (i.e programme imprime autre chose si le débogueur est attaché et que la fenêtre immédiate est utilisée que si la fenêtre immédiate n'est pas utilisée du tout). L'exemple est un peu trop long pour un commentaire ... L'utilisation de la fenêtre AUTOS n'a pas ce désavantage et il n'est pas nécessaire de taper quoi que ce soit.


@ DS27680 Je suis d'accord pour dire que cela ne devrait être utilisé que pour des fonctions simples (c'est-à-dire que non des fonctions pouvant potentiellement produire "comportement déroutant"). Mais je ne suis pas sûr de savoir comment vous pouvez obtenir la valeur de retour d'une fonction sans l'exécuter au moins une fois et pour 99,9% des cas (toutes sauf les fonctions les plus compliquées) où elle est nécessaire, il devrait suffire.


@Matt j'ai posté une solution (à l'aide de la fenêtre Autos) qui n'a pas ce désavantage que j'ai mentionné. Cependant, je dois dire que je ne savais pas que l'on peut utiliser la fenêtre immédiate pour appeler des fonctions. J'ai donc appris quelque chose de nouveau aujourd'hui. Merci c'est un plaisir de savoir :-)


@ DS27680 Ah je suis avec vous, n'a pas réalisé que c'était votre réponse. Je ne savais pas à propos de cette méthode ... vient de vous montrer ce qu'un studio Visual Behemoth est vraiment!


@Matt +1 pour le Behemoth :-)



3
votes

in vs 2010 Vous pouvez mettre le point d'arrêt sur le site d'appel de la fonction et activer la fenêtre "Autos" (si la fenêtre AUTOS n'est pas visible, vous pouvez le rendre visible à partir de débogage -> Windows -> Autos Ctrl + Alt + V, UNE). Dans la fenêtre AutoS après la marche de l'appel de la fonction (F10), vous verrez quelque chose dans les lignes de:

Type de valeur de nom

[FUNC] renvoyé [valeur de retour] [Type de retour]

où [Valeur de retour] et [Type de retour] sont la valeur de retour appropriée et tapez pour votre fonction nommée [FUNC].

J'espère que cela vous aidera.

Ceci a l'avantage de ne pas avoir à modifier le code. L'inconvénient que je vois est que si le type retourné est complexe, vous ne pouvez pas l'étendre et inspecter ses attributs tels que vous pouvez le faire si vous attribuez la valeur de retour à une variable automatique. Toutefois, pour les structures simples, la valeur de retour est étendue à quelque chose comme ceci: {var1 = [val1], var2 = [val2] ...} où Var1, Var2 sont les attributs de la structure.

Autant que je sache la fenêtre AUTOS, la fenêtre Autos est là (et a fait la même chose) dans le VS 6.0, cela s'applique donc à VS 2005 aussi, je suppose que (quelqu'un a demandé à propos de VS 2005).


3 commentaires

Outre la fenêtre "Autos", vous pouvez également ouvrir la fenêtre "Regarder". Voir ici: MSDN.MicRosoft.com/en-us/ Bibliothèque / AA290591 (vs.71) .aspx (bien que le lien indique VS 2003 .NET, la description s'applique également aux versions ultérieures).


@ anand.arumug Je ne suis pas certain que vous pouvez obtenir la valeur retournée dans "Watch". Comment le feriez-vous? Je demande pour que j'apprends quelque chose de nouveau.


Dans la fenêtre de surveillance, vous ne pouvez le voir que en entrant dans la fonction à l'aide de F11, puis déterminez la valeur à la fin de la fonction. C'est un processus manuel. J'ai spécifié la fenêtre de surveillance comme un autre moyen de voir les valeurs des variables.