Quando eseguo una versione di build con gcc (ad esempio non specifica -g
), mi sembra di finire con i simboli nel file binario e devo usare strip
per rimuoverli. In effetti, posso ancora interrompere le funzioni e ottenere backtrace in gdb (anche se senza numeri di riga).Perché gcc aggiunge simboli a build non di debug?
Questo mi ha sorpreso - qualcuno può spiegare perché questo accade?
ad es.
#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