2009-02-12 24 views
17

Cuando estaba por depurar el programa C++ en VS2005, el programa no se detuvo en los puntos de interrupción.¿Por qué no puedo depurar?

VS dijo "No se cargan símbolos para ningún marco de pila de llamadas. No se puede mostrar el código fuente".

¿Qué puedo hacer?

+0

¿Está depurando un exe o un dll? –

+0

Me sucedió después de matar accidentalmente a "mspdbsrv.exe". Killing the children of devenv.exe es un método que utilizo a veces para detener las compilaciones de monstruos, cuando "Cancelar compilación" no responde. – Liviu

+0

¡Intente averiguar si OTRA INSTANCIA (por ejemplo, versión de lanzamiento de su aplicación) se está ejecutando en segundo plano! –

Respuesta

19

Gracias a todo el mundo. Por último, encontré una solución here.

para habilitar la depuración:

1) Goto Proyecto-> Propiedades HelloWorld

2) A la izquierda ampliar "Propiedades de configuración"

3) Expandir "C/C++"

4) A la izquierda, seleccione "General"

5) A la derecha, cambie "Formato de información de depuración" al "Programa de Base de Datos Para Editar y continuar (/ ZI)"

5) A la izquierda, seleccione "Optimización"

6) A la derecha, el cambio "optimización" a "personas de movilidad reducida (/ Od)"

7) a la izquierda, expanda "conector"

8) a la izquierda, seleccione "depuración"

9) a la derecha, el cambio "Generar información de depuración" a "Sí"

10) Haga clic en OK

11) Establecer los puntos de interrupción

12) reconstruir su aplicación

también al ejecutar la aplicación use Ctrl + F5 para generar y ejecutar, esto mantiene la ventana de la consola abierta el tiempo suficiente para usted para ver su salida.

+1

Es posible que desee ponerlos en la publicación aquí en caso de que ese enlace se mueva alguna vez . –

+0

+1 Esto me ayudó hoy. – StackedCrooked

+0

He estado intentando esto y/ZI es incompatible con/clr y/clr: pure. Así que no sirve para aplicaciones basadas en WinForms o .NET. – John

1

Parece que se está conectando a un proceso en lugar de ejecutar una sesión de depuración convencional? Si de hecho se está conectando a un proceso, es importante asegurarse de que los archivos binarios que está tratando de depurar se hayan creado con el mismo código fuente actualmente abierto en su IDE.

+0

El código fuente incorrecto aún debería romperse, solo en lugares extraños en la fuente. Si no hay interrupción, es probable que sea un problema de símbolo, no un problema de código fuente. –

+0

si el código fuente no es idéntico a la fuente no se romperá (he notado este comportamiento por mi cuenta) –

3

Por alguna razón, no tiene los símbolos correctos (archivos .pdb) en la ruta del símbolo. Esto podría deberse a varios motivos:

1) Su binario se compiló más recientemente que los archivos .pdb. Intenta recompilar todo.

2) Está intentando depurar un .dll y olvidó copiar los archivos .pdb. Copie esos archivos también.

También es posible que su código no se esté ejecutando como cree.

1

¿Limpiar y reconstruir por completo, asegurándose de que se creen .pdb?

4

A pocos pasos para probar:

  1. de Depuración> Paso a paso (esto asegurará que deje justo después de empezar)
  2. de Depuración> Windows-> Módulos
  3. Busque su foo. exe en la lista.
  4. Verificar el estado del símbolo. ¿Dice que está cargado?
  5. Si no, ir a la ruta y garantizar que: a) hay un archivo llamado foo.pdb no b) la fecha y hora en foo.pdb coincide foo.exe (o está muy cerca)
+0

@Steve: No hay * .pdb en el directorio Debug. – MainID

+0

Esa es la raíz de tu problema entonces. Probablemente fue generado en alguna parte. Ve a buscar eso y ponlo en el lugar correcto. –

0

He experimentado este problema (usando C# en VS) al intentar depurar mis pruebas de unidad.

Puedes añadir el siguiente código que pondrá en marcha una nueva instancia del depurador que le permitirá yo paso a través de su código como normal:

System.Diagnostics.Debugger.Launch(); 
System.Diagnostics.Debugger.Break(); 
+0

Pero estoy depurando un programa en C++, ¿me ayuda? – MainID

+0

Sí, puede usar esto con C++. Aquí está la documentación en MSDN: http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx –

0

sólo para añadir otra posibilidad aún no cubierto por MainID:

Cuando la depuración, que en realidad comenzó un programa que pongan en las clases que quería depuración (que es una especie de añadir). El programa llamado está parcialmente escrito en C++ no administrado. Cuando marqué "Habilitar depuración de código no administrado", surgió el error (y posteriormente el programa se bloqueó) porque el programa no tenía ninguna información de depuración.

0

que han resuelto este problema en WP7 al hacer esto:

  1. Haga clic derecho en el proyecto desde el Explorador de soluciones (Ctrl + W + S)
  2. Seleccione Reconstruir.
  3. De nuevo, seleccione el proyecto, haga clic derecho y elija Implementar.
  4. Iniciar depuración (F5)

espero que le ayudará!

Cuestiones relacionadas