Error "No hay fuente disponible para main ()" al depurar C ++ simple en Eclipse con gdb

Tengo problemas para depurar un programa C ++ en Eclipse (el último RC de Helios, actualizado con el último CDT desde sí mismo) en OSX.

El programa es muy simple (esencialmente la Lección 2 de los tutoriales OpenGL de NeHe), que consta de un archivo cpp y, utilizando los marcos OpenGL y Cocoa, y se vincula con libSDL.a y libSDLmain.a.

La estructura del proyecto es muy simple: los archivos fuente están en un subdirectorio del proyecto llamado src / y el ejecutable se construye en el directorio raíz del proyecto.

El problema es que cada vez que intento agregar puntos de interrupción y depurarlo, parece que los puntos de interrupción se tocan perfectamente pero no se muestra ninguna fuente; en su lugar, aparece el error "No hay fuente disponible para main ()" en la ventana de código.

Los indicadores del compilador tienen optimizaciones establecidas en ninguno, y tanto el compilador como el enlazador tienen el indicador de símbolos de depuración establecido (-g).

La configuración de depuración en Eclipse se establece en "Progreso de generación estándar" y el depurador se establece en "gdb".

Ahora lo más extraño es que si intento depurar exactamente el mismo ejecutable, es decir. exactamente el mismo que fue construido por Eclipse: usando gdb desde la Terminal (shell), entonces todo funciona bien. Se alcanzan los puntos de interrupción, se muestra el código fuente, sin ningún problema.

Me he asegurado de que tanto Eclipse como el shell estén utilizando el mismo ejecutable gdb, y que lo estén (es / usr / bin / gdb).

Ahora puedo estar equivocado, pero todo esto me sugiere que no puede haber un problema con el compilador y los indicadores de enlace (porque el mismo ejecutable es depurable desde el shell), por lo que presumiblemente el problema debe estar en cómo se invoca gdb desde dentro de Eclipse? ¿Quizás cuando se ejecuta desde Eclipse gdb está recogiendo diferentes archivos de configuración o algo más que cuando se ejecuta desde el shell? (¿Nadie sabe?)

Realmente agradecería cualquier ayuda con esto porque lentamente me está volviendo loco.

Avíseme si hay otros detalles que podrían ser útiles: números de versión exactos de Eclipse / cdt / gdb, líneas de comando exactas del vinculador / compilador, etc., y con mucho gusto actualizaré esta publicación con ellos.

Muchas gracias de antemano,

Pensamiento

---editado @ "hace 14 horas" ---

Intenté la opción "agregar ruta del sistema de archivos" (con "buscar subcarpetas"), pero no funcionó. También intenté crear un nuevo proyecto completamente plano, pero tampoco funcionó. Incluso intenté obtener una versión de Galileo (eclipse-SDK-3.5.2RC4 con actualización de CDT), pero eso no hizo ninguna diferencia (aparte de que gdb es más lento para iniciar).

Y he notado algo extraño: una vez que recibo el mensaje "No hay fuente disponible", si cambio la Consola de Eclipse para mostrar la consola "gdb", y también enciendo el "Modo de consola detallada" para poder comunicarlo, puedo luego emita los comandos "l" y "bt" y haga que funcionen correctamente, mostrando la fuente correcta y la pila donde se alcanzó mi punto de interrupción. Lo cual, corrígeme si me equivoco, debe significar que la información está allí y que gdb se invoca correctamente, entonces, ¿por qué Eclipse no verá esta información?

Me estoy acercando a renunciar a Eclipse para ser honesto ... Llegué a eso con muchas esperanzas también.

Cualquier ayuda o pensamiento adicional sería muy apreciado.

t.

Respuestas a la pregunta(12)

Su respuesta a la pregunta