Когда я делаю сборку релиза с помощью gcc (то есть я не указываю -g
), я все равно, кажется, получаю символы в двоичном файле и должен использовать strip
для их удаления. На самом деле, я все еще могу выполнять функции точек останова и получать трассировки в GDB (хотя и без номеров строк).
Это удивило меня - кто-нибудь может объяснить, почему это происходит?
, например
#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