web-dev-qa-db-fra.com

Débogage Visual Studio 2015: impossible de développer des variables locales?

J'utilise l'aperçu Visual Studio 2015 et j'essaie de déboguer mon projet. J'utilisais auparavant VS 2012 et dépendait en grande partie de la possibilité de survoler et d'étendre les variables locales pour examiner leurs valeurs. J'essaie de le faire en 2015 maintenant, mais lorsque je survole une variable, la zone qui s'affiche ne dit que "(variable locale) Nom de classe nom_variable" (exemple: "variable locale) Titre de la chaîne"). Il n'y a pas de bouton Développer et il n'affiche pas la valeur de la variable dans la case.

Dois-je modifier un paramètre pour pouvoir survoler les variables et les développer?

43

Ce pourrait être un bug. Please enregistrez un bug de connexion avec une repro si vous en avez un.

En attendant, vous pourrez peut-être contourner le problème en définissant les options du débogueur pour utiliser le moteur de débogage hérité: Outils -> Options -> Débogage -> Général: cochez "Utiliser les anciens C # et VB expressions d'évaluation "et" Utiliser le mode de compatibilité géré ".

Cette solution a fonctionné pour moi à chaque fois. Mais s'il vous plait, continuez à classer les bugs!

Options window

89
Andrew Arnott

J'avais un problème similaire: lorsque je survolais ma variable locale, certains me laissaient plonger plus profondément et certains ne montraient rien. Après quelques recherches, j’ai trouvé un article sur msdn ici , qui suggérait de réinitialiser les paramètres dans VS. Une fois que j'ai fait cela, j'ai été averti que je courais en mode Release et que certaines fonctionnalités de débogage peuvent ne pas être disponibles. Une fois que je suis passé en mode débogage, tout a fonctionné normalement.

Espérons que cela fonctionnera pour vous aussi.

19
user2325333

Comme décrit ici , vous devez activer la case à cocher "Supprimer les optimisations JIT lors du chargement du module (géré uniquement)" dans Debug -> Options -> Débogage -> Général.

Vous devez également supprimer l'indicateur "Optimiser le code" dans les propriétés de vos projets.

8
ilCosmico

J'avais un problème similaire dans VS2015: certaines variables afficheraient les valeurs de débogage, d'autres ne montreraient rien lorsqu'elles sont survolées.

L'activation du paramètre suivant de Andrew Arnott a résolu mon problème: Outils -> Options -> Débogage -> Général: "Utilisez les anciens C # et VB des évaluateurs d'expression").

7
Jon Knopp

J'ai découvert le moyen de pénétrer dans le code natif et d'avoir accès au contenu des conteneurs STL lors du débogage à l'aide de la CLI:

Outils\Options ...\Débogage\Généralités: décochez la case "Utiliser le mode de compatibilité managé" (OUI! NON VÉRIFIEZ-LE!)

Dans le code natif, au lieu d'ajouter des points d'arrêt, ajoutez simplement ceci:

affirmer (faux);

Lorsque vous vous écartez des côtes, cliquez simplement sur "Réessayer" pour déboguer ou sur "Ignorer" pour continuer.

Bon débogage avec Visual Studio 2015 :)

Kochise

1
Kochise

Cela a fonctionné pour moi dans VS2017 (mon VS est en allemand, les noms des onglets pourraient être un peu différents):

Projet -> Propriétés -> C/C++ -> Génération de code -> RunTimeErrorCheck ->\RTC

Essayez également de désactiver l'option d'optimisation, car rendre votre code plus rapide peut signifier que vous ne pouvez pas surveiller les valeurs de vos variables locales:

Projet -> Propriétés -> C/C++ -> Optimisation -> Désactivé

0
dalapiz

J'ai constaté que le simple fait de changer la liste déroulante avec "Libérer et déboguer" pour revenir au débogage me permettait de voir l'expansion des variables lors du débogage de mon code.

Cette nouvelle solution a fonctionné pour VS 2017 sur mon ordinateur personnel.

Mon ordinateur de travail a pu afficher cette extension en 2017 après avoir choisi l'option "Construire >> Solution propre. Il fonctionnera même lorsque la liste déroulante est définie sur" Libérer ".

Bonne chance à tous ceux qui veulent cette merveilleuse aide au débogage VS. J'espère qu'en utilisant l'une de ces méthodes, vous pourrez revenir à la normale.

0
Jacob Fortuna

J'avais un projet qui utilisait des fichiers JavaScript minifiés et je voulais utiliser les fichiers TypeScript pour le débogage. J'ai mis le code JavaScript non minié et le TypeScript associé dans le projet et modifié les références pour utiliser le fichier JavaScript normal et non le fichier modifié. Mes points de rupture ont été touchés dans le fichier TypeScript, mais je n’ai pas obtenu d’informations de survol (de manière surprenante, cela ressemblait à l’ajout de l’objet/de la variable alors qu’une montre semblait fonctionner).

Pour résoudre ce problème, je viens d’exclure le fichier JavaScript minifié du fichier du projet et d’y inclure le code JavaScript. (Le fichier TypeScript que j'ai laissé exclu).

0
spacebread