55 votes

aucun symbole de débogage trouvé lors de l'utilisation de gdb

GNU gdb Fedora (6.8-37.el5) Noyau 2.6.18-164.el5

J'essaye de déboguer mon application. Cependant, chaque fois que je passe le binaire au gdb, il dit:

 (no debugging symbols found)

Voici le fichier de sortie du binaire, et comme vous pouvez le voir, il n'est pas supprimé :

 vid: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

Je compile avec les CFLAGS suivants :

 CFLAGS = -Wall -Wextra -ggdb -O0 -Wunreachable-code

Quelqu'un peut-il me dire s'il me manque un simple ici?

64voto

Employed Russian Points 50479

La cause la plus fréquente de "aucun symbole de débogage trouvé" lorsque -g est présent est qu'il y a un -s ou -S quelque part sur la ligne de lien .

De man ld :

    -s
   --strip-all
       Omit all symbol information from the output file.

   -S
   --strip-debug
       Omit debugger symbol information (but not all symbols) from the output file.

50voto

Maxim Yegorushkin Points 29380

L'application doit être à la fois compilée et liée avec l'option -g C'est-à-dire que vous devez mettre -g dans les deux CPPFLAGS et LDFLAGS .

26voto

geekosaur Points 26170

Certaines distributions Linux n'utilisent pas les symboles de débogage de style gdb (IIRC, ils préfèrent dwarf2 .)

En général, gcc et gdb seront synchronisés quant au type de symboles de débogage qu'ils utilisent, et forcer un style particulier ne fera que poser des problèmes ; à moins que vous ne sachiez que vous avez besoin d'autre chose, utilisez seulement -g .

6voto

Kevin Points 4235

Vous devriez également essayer -ggdb au lieu de -g si vous compilez pour Android !

5voto

atx Points 945

Remplacez -ggdb par -g et assurez-vous que vous ne supprimez pas le binaire avec la commande strip.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X