当我使用 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