solar roja lunar luna julio hoy debugging eclipse-cdt breakpoints

debugging - julio - eclipse lunar luna roja



¿Por qué Eclipse CDT ignora los puntos de interrupción? (11)

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".

¿Alguien tiene alguna pista de por qué está sucediendo 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 se llega a esa parte del código porque puedo alcanzarlo

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


"Punto de inflexión no resuelto" 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í, es probable que veas esta falla fija en GCC.


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 nuevos gdb permiten establecer puntos de interrupción diferidos, pero es posible que CDT no los admita (todavía). 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.

De la documentación de GDB :

Para un punto de interrupción pendiente cuya dirección aún no se conoce, 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.


Algunas veces, las optimizaciones causarán omisiones en los puntos de interrupción. Asegúrate de compilar con -O0


He descubierto que usar F8 (reanudar) no se detiene en mis puntos de corte. 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 ayudes ...


Asegúrese de que el tipo de punto de interrupción sea 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í.


He descubierto 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.


¿Coloca un punto de interrupción en una clase / función de plantilla? He encontrado el mismo problema: puedo recorrer el código de las plantillas, pero los puntos de interrupción no funcionan. Supongo que 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 esperará a doit (...) y nunca por doit (...). En el arrendamiento gdb se detiene en el punto de interrupción si lo configuro para la función: ''doit''.


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


Yo 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.

Esto resolvió mi problema.


SI está utilizando GDB como depurador, asegúrese de que está utilizando las dos banderas: -g y -ggdb

Puede editar el archivo make directamente, FCFLAGS = -g -ggdb (algunas otras banderas que pueda tener)

o vaya a Configuración de depuración (está en el menú que se despliega cuando hace clic en la pequeña flecha que está junto al icono del 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í.