Когда я делаю сборку release с помощью 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