2010-02-24 4 views
36

J'ai copié un projet existant et renommé le dossier. Maintenant j'obtiens cette erreur quand j'essaye de compiler l'applicationLes informations de débogage ne peuvent pas être trouvées ou ne correspondent pas à celles de Visual Studio

debugging information cannot be found or does not match. No symbols loaded. 
Do you want to continue debugging ? 

Si je clique oui, il compile et fonctionne bien. Mais maintenant je dois faire face à ce message. Juste curieux de savoir ce que je change dans les propriétés du projet pour l'arrêter.

Répondre

29

La raison principale est que vous n'avez pas de pdb et d'exe correspondants.

Quelques solutions possibles:

  • Vous compilez dans la version au lieu de débogage
  • Vous devez nettoyer/construire ou reconstruire
  • Vous n'avez pas vos fichiers pdb générés dans le même répertoire comme l'exe
  • Vous avez un pdb incompatible, peut-être la source copiée est plus récente que la date d'aujourd'hui et quelque chose ne se construit pas correctement.
  • Essayez de nettoyer tous les fichiers objet de débogage
  • Vous joignons à un processus qui vous avez commencé à partir d'un endroit différent de celui où votre construction exe et pdb existent
  • Redémarrez Visual Studio
1

Le fichier de base de données du programme pdb semble être manquant (en principe, le chemin a été modifié et ne peut plus être trouvé par le compilateur). Voir this poste associé pour plus d'informations.

55

Vous avez probablement désactivé les informations de débogage pour votre projet:

  • Faites un clic droit sur votre projet -> Propriétés
  • Configuration propriétés -> Linker -> Debugging
  • Switch « Générer les informations de débogage » de Non à Oui

Reconstruire votre projet et une nouvelle tentative, il devrait maintenant fonctionner sans le message :)

+3

Une telle solution facile! – Watusimoto

+0

@NicholasGuillaume Je cours en version et j'obtiens cette erreur. Je ne veux pas générer d'informations de débogage. Y at-il un moyen que je peux Visual Studio de ne pas essayer de lancer avec des informations de débogage? –

+0

@JonathanMee Pas aussi loin que je sache. –

0

J'ai eu un problème similaire et la raison en était que j'avais exécuté l'un des projets de ma solution dans un processus différent et que ce processus ne pouvait pas être tué. Je n'y pensais pas beaucoup. Ainsi, lorsque je construisais la solution dans un environnement séparé, l'un des fichiers pdb ne correspondait pas, à la fin je ne pouvais pas charger les fichiers pdb. Je viens de redémarrer mon ordinateur et cela l'a corrigé.

Bonne chance

9

Cela me arrive de temps en temps, alors que le code de débogage et de faire des changements, il semble que met en cache les informations visual studio pdb et parfois il est bloqué. Faire une solution de reconstruction, supprimer le pdb et en créer un nouveau ne résout pas le problème.

Bien sûr, j'ai les informations de débogage de génération sur et tout ce dont il a besoin, spécialement depuis que cela se produit lors du débogage du code plusieurs fois.

Visual Studio semble être satisfait du pdb en mémoire et refuse de le mettre à jour, quels que soient les horodatages ou les changements de taille réguliers dans le pdb.La seule façon de réinitialiser ceci est de quitter Visual Studio (l'EDI) et de le redémarrer à nouveau.

Dans certaines rares occurrences, l'EDI est peut-être toujours en cours d'exécution en arrière-plan (l'explorateur de processus le montre à cet endroit) et peut maintenir la poignée sur le fichier ouvert. Vous pouvez tuer le processus avant de redémarrer l'EDI.

Bonne chance

0

Visual Studio peut Redémarrage fixer une instance de ce problème.

0

Faites un clic droit sur votre projet dans le navigateur de solution => Clean => Build. qui est si votre build génère un pdb du tout (regardez dans votre répertoire cible) Sinon, vous devez activer le débogage par les étapes mentionnées dans d'autres postes

2

J'ai fait face au même problème et a essayé toutes les solutions mentionnées ci-dessus, mais ça ne pouvait pas m'aider. Ensuite, j'ai trouvé une nouvelle solution au hasard et cela a fonctionné. La solution est que, dans le cas où vous avez beaucoup de projets dans une solution, vous devez marquer un projet (spécifique que vous avez à décider) en tant que projet "Set as Startup". Faites un clic droit sur ce projet spécifique et cliquez sur "Définir comme projet de démarrage".

Cela a fonctionné pour moi.

+0

Merci. Cela a fonctionné pour moi. – Waqar

+0

Wow. Je vous remercie. – Ben

6

Je viens de rencontrer cette erreur dans VS2012. Il est définitivement causé par un bogue dans Visual Studio, qui se révèle dans des situations où le fichier PDB local du projet principal porte le même nom que le fichier PDB final pour tout l'exécutable (même si les deux se trouvent dans des répertoires différents!)

Considérons cet exemple.

La solution consiste en trois projets: main, a et b. main est le projet de niveau supérieur pour l'exécutable, tandis que a et b sont des bibliothèques liées à main.

Dans les trois projets, la variable $(IntDir) est définie sur $(SolutionDir)\$(Configuration)\$(ProjectName)\. Cela signifie que le projet main vide ses fichiers intermédiaires à Debug\main\, projet a - à Debug\a\ et ainsi de suite.

Dans les paramètres C/C++ -> Output Files, tous les trois projets ont la valeur Program Database File Name définie sur $(IntDir)$(TargetName).pdb. Cela signifie que le projet main génère son fichier PDB local en tant que Debug\main\main.pdb, le projet b en tant que Debug\b\b.pdb et ainsi de suite.

Enfin, dans les paramètres Linker -> Debugging du projet main, la valeur Generate Program Database File est définie sur $(OutDir)$(TargetName).pdb. Cela signifie que le fichier PDB global pour l'exécutable entier sera généré comme Debug\main.pdb.

Notez que dans cette configuration, chaque fichier PDB est généré dans son propre répertoire distinct.

Dans cette configuration, vous obtiendrez Les informations de débogage sont introuvables ou ne correspondent pas à l'erreur si vous tentez d'exécuter le programme sous le débogueur.Et si vous jetez un oeil au fichier Debug\main.pdb (qui existera), vous remarquerez que c'est exactement le même que le fichier Debug\main\main.pdb! C'est à dire. en quelque sorte la PDB locale pour main a réussi à remplacer ce qui était supposé être la PDB globale pour l'exécutable final. C'est à dire. le débogueur a raison de se plaindre que le fichier PDB est "faux". C'est en effet faux.

Encore une fois, dans la configuration ci-dessus, le PDB global final est écrasé par le PDB local du projet principal. Je ne sais pas pourquoi ça arrive. Cela semble être un bug. (Notez que même si ces fichiers PDB ont le même nom, ils sont générés dans des répertoires différents, ils ne doivent pas être en conflit.)

Une solution de contournement qui résout ce problème consiste à donner un nom différent à la PDB locale du projet main. Par exemple, passez au C/C++ -> Output Files pour le projet main et remplacez la valeur Program Database File Name par $(IntDir)$(TargetName)_local.pdb (ou par $(IntDir)12345.pdb si vous le souhaitez). Cela permettra d'éliminer le conflit et de résoudre le problème.

-1

Curieux, il me arrive que je devais changer le nom du dossier de:

...\Custom Librarry (MyDll.dll(

à

...\Custom Librarry (MyDll.dll) 

juste en fermant la parenthèse cela a fonctionné!

0

Très probablement il y a d'autres raisons comme pdb/incompatibilité de fichier .exe, quelque chose n'a pas été construit/reconstruit, mais j'avais affaire similaire dans Visual Studio 2013 -

Quelque chose à voir avec la fonction en ligne virtuelle - donc je suspect. Dans mon cas, le débogueur sautait au milieu d'une autre fonction C++, pas celle qui était appelée. Jump a été supprimé du code source par 11 lignes de code source, mais je ne peux pas expliquer pourquoi beaucoup de mal calculé. Par de simples fonctions de réarrangement, je me suis débarrassé de ce problème.

Peut-être besoin d'une analyse plus détaillée pourquoi le décalage de 11 lignes est arrivé à l'origine.

N'a pas vu ce genre de comportement dans un autre studio visuel.

0

Ce problème me dérange depuis longtemps. La réponse d'AnT est très utile. L'idée principale est Ne pas avoir deux fichiers pdb ont le même nom, même s'ils ne sont pas dans le même répertoire.

Ceci est ma situation: J'ai des projets de remorquage nom "FooBar" et "FooBarDll", le premier est un exe, et le second est un dll. J'ai mis les deux projets le nom cible pour être "FooBar", afin qu'ils génèrent respectivement "FooBar.exe" et "FooBar.dll".

Je mis

  1. "Général -> Répertoire intermédiaire" pour être "$ (OutDir) \ $ (ProjectName) \"
  2. « C/C++ -> fichiers de sortie -> Base de données du programme Fichier Nom "être" $ (IntDir) $ (TargetName) .pdb "
  3. " Linker -> Déboguer -> Générer le fichier de base de données du programme "être" $ (OutDir) $ (TargetName).pdb »

Alors je reçois ces fichiers:

  1. Debug \ FooBar.exe
  2. Debug \ FooBar.pdb // C++ pdb
  3. Debug \ FooBar \ FooBar.pdb // linker pdb

  4. Debug \ FooBar.dll

  5. Debug \ FooBar.pdb // C++ pdb ag ain!
  6. Debug \ FooBarDll \ FooBar.pdb // Linker pdb

Ma solution est de remplacer tous les "format" avec "ProjectName", alors je vais obtenir:

  1. Debug \ FooBar.exe
  2. Debug \ FooBar.pdb // C++ pdb
  3. Debug \ FooBar \ FooBar.pdb // Linker pdb

  4. Debug \ FooBar.dll

  5. Debug \ FooBarDll.pdb // C++ pdb
  6. Debug \ FooBarDll \ FooBarDll.pdb // Linker pdb

Alors il n'y a pas de conflit!

Donnez C/C++ pdb un suffixe peut être mieux, comme: "C/C++ -> fichiers de sortie -> Base de données du programme Nom du fichier" pour être "$ (IntDir) $ (ProjectName) _C.pdb"

0

J'ai eu le même problème, et ce link m'a aidé à résoudre le problème, en renommer "symsrv.no" en "symsrv.yes" dans le dossier VS IDE.

2

Activer la création PDB par:

Faites un clic droit sur MyProject > Properties > Debugging:

  • C/C++ > General > Debug Information Output = Program Database (/Zi)
  • Linker > Debugging > Generate Debug Info = Yes (/DEBUG)

Clean MyProject, redémarrez Visual Studio (juste pour être sûr), reconstruisez MyProject . Le dossier de sortie doit alors contenir les fichiers * .pdb.

Si vous déboguer le code optimisé/release envisager de passer l'optimisation via

  • C++ > Optimization > Optmization = Disabled (/Od)
+0

Redémarrer Visual Studio n'est pas nécessaire! – Elmue

Questions connexes