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