2008-10-15 12 views
24

Mi problema es que establecí algunos puntos de interrupción en mi código y algunos de ellos no funcionan. En algunos lugares, se queja de "Punto de inflexión no resuelto".¿Por qué Eclipse CDT ignora los puntos de interrupción?

¿Alguien tiene alguna pista de por qué sucede esto? Estoy usando gdb, por cierto.

EDITAR: Sí, por supuesto está compilado con información de depuración. Solo ocurre en algunas clases o puntos en el código. Y estoy bastante seguro de que esa parte del código se alcanza porque puedo alcanzarlo paso a paso

EDITAR: La solución de Richard no funciona; gracias de cualquier manera. Estoy compilando en Debug, sin ninguna optimización.

+0

¿Está estableciendo los puntos de interrupción en líneas de código 'reales'? Con eso, quiero decir código ejecutable en lugar de, por ejemplo, una línea que no contenga nada más que un corsé. – paxdiablo

+3

esto me pasa todo el tiempo; en general, el depurador de Eclipse CDT es muy poco confiable, lamentablemente – UncleZeiv

+0

Compruebe si su ejecutable está compilado con información de depuración. – MysticSlayer

Respuesta

3

"Punto de inflexión sin resolver" solo significa que GDB no encontró la ubicación del código correspondiente al archivo y la línea en la que intentó establecer un punto de interrupción.

¿Estás tratando de parar en un constructor?

Si es así, probablemente esté viendo este Gly fijo bug.

+0

también estoy recibiendo el mismo problema ¿me pueden ayudar, por favor –

14

Podría ser que esté intentando establecer puntos de interrupción en una biblioteca compartida que aún no se ha cargado. Eso no funcionará hasta que la biblioteca se haya cargado. Los gdb más nuevos permiten establecer puntos de interrupción diferidos, pero es posible que (CDT) aún no cuente con el soporte. Una solución consiste en establecer un punto de interrupción en un lugar que está disponible desde el principio y que se alcanzará cuando la biblioteca compartida en cuestión ya esté cargada. Luego configure el otro punto de interrupción en la biblioteca compartida. Ahora debería funcionar. Es un poco más tedioso, pero generalmente funciona.

Desde el GDB documentation:

Para un punto de interrupción pendiente cuya dirección no se conoce todavía, este campo contendrá 'pendiente'. Tal punto de interrupción no se activará hasta que se cargue una biblioteca compartida que tenga el símbolo o la línea referida por punto de interrupción.

3

A veces, las optimizaciones pueden causar omisiones en los puntos de interrupción. Asegúrese de que está compilando con -O0

0

He encontrado que usar F8 (reanudar) no se detiene en mis puntos de interrupción. Pero, si tengo Stop On Startup: main set, entonces paso por encima de mi código (F5/F6), entonces mis puntos de ruptura son golpeados. No tengo ninguna opción especial de compilación que no sea -g o -g3. Espero que ayude ...

0

Asegúrese de que el tipo de punto de interrupción sea el correcto. Para C/C++ es un pequeño punto azul. Si se parece a cualquier otra cosa, es probable que el tipo de punto de interrupción sea incorrecto. Intentaría cerrar el archivo, haga clic derecho sobre él -> abrir con -> C/C++ Editor. Esto funcionó para mí.

9

He encontrado que a veces el cambio del Lanzador de procesos referido de "GDB (DSF) Create Process Launcher" a "Standard Create Process Launcher" me ha solucionado este problema. Otras veces, simplemente eliminar todos los puntos de interrupción y reiniciar Eclipse funciona.

0

¿Coloca un punto de interrupción en una clase de plantilla/función? He encontrado el mismo problema: puedo recorrer el código de las plantillas, pero los puntos de interrupción no funcionan. supongo Eclipse no entiende que tiene que colocar puntos de interrupción en todas las instancias de esa clase:

template <typename T> 
int doit(T a) { 
return a.do(); // <-- breakpoint here 
} 
... 
A a; 
cout << doit(a); 

Creo que va a esperar a que doit (...) y nunca para doit (...). En el arrendamiento gdb se detiene en el punto de interrupción si lo configuro para la función: 'doit'.

0

Tuve un problema similar con GDB. Parece que fue causada por nombres de archivos de código fuente idénticos, incluso si tienen diferentes rutas. Cambié el nombre de los duplicados y GDB funcionó bien después de eso.

Silviu

0

tuve el mismo problema,

1.- Removed the breakpoints. 
2.- Restart eclipse 
3.- Clean the project by using project -> clean 
4.- Add again the breakpoints and start your debugging. 

Esta solucionado mi problema.

+0

También tuve este problema y fue suficiente para simplemente reiniciar eclipse. – user823981

0

si está usando GDB como un depurador, asegúrese de que está utilizando ambas banderas: -gy -ggdb

Puede editar el archivo directamente Haga, FCFLAGS = -g -ggdb (alguna otra indicadores que pueda tener)

o vaya a Configuración de depuración (Está en el menú que aparece cuando hace clic en la pequeña flecha además del icono de error.) Seleccione el proyecto que está depurando y haga clic en la pestaña del depurador. Verifique que esté usando gdb, y agregue los indicadores aquí.

Cuestiones relacionadas