Lorsque je crée une version avec gcc (c'est-à-dire que je ne spécifie pas -g
), il me semble toujours que les symboles se trouvent dans le binaire et que je dois utiliser strip
pour les supprimer. En fait, je peux encore décomposer des fonctions et obtenir des backtraces dans gdb (mais sans les numéros de ligne).Pourquoi gcc ajoute-t-il des symboles à une construction non-debug?
Cela m'a surpris - quelqu'un peut-il expliquer pourquoi cela se produit?
par exemple.
#include <stdio.h>
static void blah(void)
{
printf("hello world\n");
}
int main(int argc, char *argv[])
{
blah();
return 0;
}
gcc -o foo foo.c
nm foo | grep blah
:
08048374 t blah