Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
gdb no muestra el código fuente para el ejecutable no eliminado

Estoy trabajando en un proyecto y parece que no puedo depurar mi código. Primero pensé que era un error de configuración en mi IDE (Eclipse), pero luego resultó que no funcionaba en absoluto, ni siquiera con gdb para un programa único como el que se muestra a continuación.

prueba.c

 void main() { int a=1; int b=2; int c=3; a=b+2; // line 5: breakpoint is set here c=a+b; b=c+3; return; } user@mycomputer:/home/user/test$ gcc -g -O0 -c test.c user@mycomputer:/home/user/test$ gcc -g -O0 test.o -o test user@mycomputer:/home/user/test$ gdb test GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://bugs.launchpad.net/gdb-linaro/>... Reading symbols from /home/user/test/test...done. (gdb) b test.c:5 Breakpoint 1 at 0x4004e9: file test.c, line 5. (gdb) run Starting program: /home/user/test/test warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000 Breakpoint 1, 0x00000000004004e9 in main () (gdb) step Single stepping until exit from function main, which has no line number information. 0x00007ffff7a3b76d in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) step Single stepping until exit from function __libc_start_main, which has no line number information. [Inferior 1 (process 3306) exited with code 011]

¿Tienes alguna idea de lo que va mal aquí? ¿Por qué no puedo ver la línea de origen donde puse el punto de interrupción? ¿Por qué gdb no muestra la línea de origen que se está ejecutando cuando se usa el paso? Además, ¿por qué saldría del programa en el comando del segundo paso? ¡Todavía debería estar en la línea b=c+3!

Lo he comprobado y los símbolos de depuración están efectivamente en el ejecutable.

 user@mycomputer:/home/user/test$ file test test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x37bb8d43d3a8394ce3bb9031e1e090d6c6d5aea7, not stripped

Tengo gcc 4.8.1 y gdb 7.4-2012.04.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo que observa claramente parece ser un error en GDB:

 (gdb) b test.c:5 Breakpoint 1 at 0x4004e9: file test.c, line 5.

Aquí GDB sabe claramente que los símbolos de depuración están presentes y que la dirección 0x4004e9 corresponde a la línea 5 de test.cc. Pero cuando se alcanza el punto de interrupción:

 Breakpoint 1, 0x00000000004004e9 in main ()

de alguna manera, GDB olvidó lo que sabía hace unos momentos (suponiendo que no reemplazó ./test entre establecer el punto de interrupción y ejecutar el binario).

Dado que gdb 7.4-2012.04 es bastante antiguo, lo primero que debe hacer es intentar actualizarlo (tal vez compilar gdb-7.6 desde la fuente) y ver si el problema persiste.

Si es así, registre un error en GDB bugzilla y adjunte su binario a ese error.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda