2010-02-24 17 views
36

He copiado un proyecto existente y he cambiado el nombre de la carpeta. Ahora me sale este error cuando intento compilar la aplicacióninformación de depuración no se puede encontrar o no coincide con visual studio

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

Si hago clic en sí, compila y funciona bien. Pero ahora tengo que lidiar con ese mensaje. Solo tengo curiosidad sobre lo que cambio en las propiedades de los proyectos para que pare.

Respuesta

29

La razón principal es que no tiene un pdb y un exe que coincidan.

Algunas soluciones posibles:

  • está compilando en la liberación en lugar de depuración
  • es necesario limpiar/construir o reconstruir
  • Usted no tiene los archivos pdb que se generan en el mismo directorio como el exe
  • Tiene un pdb que no coincide, tal vez la fuente copiada es más reciente que la fecha actual y algo no está funcionando correctamente.
  • Trate de limpiar todos los archivos objeto de depuración
  • va a conectar a un proceso que ha iniciado desde un lugar diferente de donde existen el exe de construcción y pdb
  • Reinicie Visual Studio
1

Parece que falta el archivo pdb o la base de datos del programa (básicamente, la ruta ha cambiado y el compilador ya no puede encontrarla). Consulte la publicación relacionada this para obtener información adicional.

55

Probablemente han desactivado la información de depuración para su proyecto:

  • Haga clic derecho sobre su proyecto -> Propiedades
  • Configuración propiedades -> Enlazador -> Depuración
  • Switch "Generar información de depuración" de no a sí

reconstruir su proyecto y vuelva a intentar, ahora debería funcionar sin el mensaje :)

+3

una solución tan fácil! – Watusimoto

+0

@NicholasGuillaume Me estoy ejecutando en versión y obtengo este error. No quiero generar información de depuración. ¿Existe alguna manera de que Visual Studio no intente ejecutar con información de depuración? –

+0

@JonathanMee No tan lejos como sé. –

0

tuve un problema similar y la razón fue que había ejecutado uno de los proyectos de mi solución en un proceso diferente y ese proceso no pudo ser eliminado. No pensé mucho en eso. Entonces, cuando estaba construyendo la solución en un entorno separado, uno de los archivos pdb no coincidía, por lo que al final no pude cargar ninguno de los archivos pdb. Acabo de reiniciar mi computadora y eso lo solucionó.

Buena suerte

9

Esto me pasa de vez en cuando, durante la depuración de código y hacer cambios parece que Visual Studio almacena en caché la información de AP y, a veces se queda atascado. Hacer una solución Rebuild, eliminar el pdb y crear uno nuevo no soluciona el problema.

Por supuesto que tengo la información de generación de depuración y todo lo que se necesita, especialmente porque esto ocurre al depurar el código varias veces.

Visual Studio parece estar contento con la memoria pdb en la memoria y se niega a actualizarla, independientemente de las marcas de tiempo o incluso los cambios de tamaño en el pdb.

La única manera de restablecer esto es salir de Visual Studio (el IDE) y reiniciarlo de nuevo.

En algunas ocasiones raras, el IDE podría seguir ejecutándose en segundo plano (el explorador de procesos lo muestra allí) y podría mantener abierto el identificador del archivo. Puede matar el proceso antes de reiniciar el IDE.

buena suerte

0

reiniciar Visual Studio puede fijar una instancia de este problema.

0

Haga clic derecho en su proyecto en el navegador de soluciones => Limpiar => Construir. es decir, si su construcción genera un .pdb en absoluto (imagen escénica en el directorio de destino) Si no es así, debe activar la depuración de los pasos mencionados en otros puestos

2

me enfrenté al mismo problema y probado todas las soluciones mencionadas anteriormente, pero no podría ayudarme Luego encontré una nueva solución al azar y funcionó.

La solución es que, en caso de que tenga muchos proyectos en una solución, debe marcar cualquiera (uno específico que usted tenga que decidir) proyecto como "Establecer como proyecto de inicio". Haga clic derecho en ese proyecto específico y haga clic en "Establecer como proyecto de inicio".

Me funcionó.

+0

Gracias. Eso funcionó para mí. – Waqar

+0

Wow. Gracias. – Ben

6

Acabo de encontrar este error en VS2012. Definitivamente es causado por un error en Visual Studio, que se revela en situaciones en las que el archivo PDB local del proyecto principal tiene el mismo nombre que el archivo final PDB para todo el ejecutable (¡incluso si los dos están ubicados en directorios diferentes!)

Considere este ejemplo.

La solución consta de tres proyectos: main, a y b. main es el proyecto de nivel superior para el ejecutable, mientras que a y b son bibliotecas vinculadas al main.

En los tres proyectos, la variable $(IntDir) se establece en $(SolutionDir)\$(Configuration)\$(ProjectName)\. Esto significa que el proyecto main vuelca sus archivos intermedios a Debug\main\, proyecto a - a Debug\a\ y así sucesivamente.

En C/C++ -> Output Files ajustes los tres proyectos tienen Program Database File Name valor establecido en $(IntDir)$(TargetName).pdb. Esto significa que el proyecto main genera su archivo PDB local como Debug\main\main.pdb, proyecto b como Debug\b\b.pdb y así sucesivamente.

Por último, en la configuración de proyecto Linker -> Debuggingmain el valor se establece en Generate Program Database File$(OutDir)$(TargetName).pdb. Esto significa que el archivo PDB global para todo el ejecutable se generará como Debug\main.pdb.

Tenga en cuenta que en esta configuración cada archivo PDB se genera en su propio directorio separado.

En esta configuración obtendrá La información de depuración no se puede encontrar o no coincide con el error si intenta ejecutar el programa en el depurador.Y si echas un vistazo al archivo Debug\main.pdb (que existirá), verás que es exactamente el mismo que el archivo Debug\main\main.pdb. Es decir. de alguna manera, el PDB local para main logró sobrescribir lo que se suponía que era el PDB global para el ejecutable final. Es decir. el depurador está en lo correcto al quejarse de que el archivo PDB es "incorrecto". De hecho, está mal.

De nuevo, en la configuración anterior, el PDB global final de alguna manera es sobrescrito por el PDB local del proyecto superior. No sé por qué sucede. Parece ser un error. (Tenga en cuenta que aunque estos archivos PDB tienen el mismo nombre, se generan en directorios diferentes, es decir, no deberían entrar en conflicto.)

Una solución que soluciona este problema es asignarle un nombre diferente al PDB local del proyecto main. Por ejemplo, solo vaya a C/C++ -> Output Files para el proyecto main y cambie el valor Program Database File Name a $(IntDir)$(TargetName)_local.pdb (o al $(IntDir)12345.pdb si lo desea). Esto eliminará el conflicto y resolverá el problema.

-1

curioso, me pasa a mí que tenía que cambiar el nombre de la carpeta de:

...\Custom Librarry (MyDll.dll(

a

...\Custom Librarry (MyDll.dll) 

sólo cerrar el paréntesis funcionó!

0

más probable es que hay otras razones como .pdb/desajuste archivo .exe, algo que no se construyeron/reconstruido, pero no tenía caso similar en Visual Studio 2013 -

algo que ver con la función en línea virtual - por lo que sospechar.

En mi caso, el depurador saltaba en medio de otra función de C++, no la que se llamaba. Saltar fue el código fuente de 11 líneas de código fuente, pero no puedo explicar por qué ocurrió un error de cálculo. Mediante simples funciones de reorganización, me deshice de este problema.

Puede ser necesario un análisis más detallado por qué el cambio de 11 líneas ocurrió originalmente.

No he visto este tipo de comportamiento en ningún otro estudio visual.

0

Este problema me ha molestado durante mucho tiempo. Anwser de AnT es muy útil. La idea principal es No tener dos archivos pdb con el mismo nombre, incluso si no están en el mismo directorio.

Esta es mi situación: Tengo los proyectos de remolque llamados "FooBar" y "FooBarDll", el primero es un exe, y el segundo es un dll. Establecí ambos proyectos Nombre de destino para que sean "FooBar", para que generen "FooBar.exe" y "FooBar.dll" respectivamente.

Entonces puse

  1. "General -> Directorio Intermedio" a ser "$ (OutDir) \ $ (Nombre del Proyecto) \"
  2. "C/C++ -> archivos de salida -> Archivo de Base de Datos de Programa Nombre "to be" $ (IntDir) $ (TargetName) .pdb "
  3. " Linker -> Debugging -> Generate Program Database File "to be" $ (OutDir) $ (TargetName).AP"

por lo que obtener estos archivos:

  1. depuración \ FooBar.exe
  2. depuración \ FooBar.pdb // C++ AP
  3. depuración \ FooBar \ FooBar.pdb // enlazador AP

  4. depuración \ FooBar.dll

  5. depuración \ FooBar.pdb // C++ AP ag ain!
  6. depuración \ FooBarDll \ FooBar.pdb // Enlazador AP

Mi solución está sustituyendo cada "TargetName" con "Nombre del Proyecto", entonces se obtiene:

  1. depuración \ FooBar.exe
  2. depuración \ FooBar.pdb // C++ AP
  3. depuración \ FooBar \ FooBar.pdb // Enlazador AP

  4. depuración \ FooBar.dll

  5. depuración \ FooBarDll.pdb // C++ AP
  6. depuración \ FooBarDll \ FooBarDll.pdb // Enlazador AP

Entonces no hay conflicto!

Dar C/C++ pdb un sufijo puede ser mejor, como: "C/C++ -> archivos de salida -> Programa Database File Name" a ser "$ (IntDir) $ (Nombre del Proyecto) _C.pdb"

0

Tuve el mismo problema, y ​​este link me ayudó a resolver el problema, cambie el nombre de "symsrv.no" a "symsrv.yes" en la carpeta VS IDE.

2

permitir la creación AP por:

clic derecho en MyProject > Properties > Debugging:

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

Limpio MiProyecto, reinicie Visual Studio (sólo para estar seguro), reconstrucción MiProyecto . La carpeta de salida debería contener archivos * .pdb.

Si se depura optimizado/código de liberación considerar la desconexión de optimización a través

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

¡No es necesario reiniciar Visual Studio! – Elmue

Cuestiones relacionadas