(gdb) l main
...
4614 if (do_daemonize)
4615 save_pid(getpid(), pid_file);
(gdb) l save_pid
Function "save_pid" not defined.
在源文件中有它的定义:
static void save_pid(const pid_t pid, const char *pid_file) {
FILE *fp;
...
}
save_pid
和main
在同一个源文件中,但只有main
有调试符号,为什么??
更新
另一个具有非常简单的静态函数的测试用例:
#include <stdio.h>
static int test()
{
return 0;
}
int main(void)
{
//int i = 6;
printf("%f",6.4);
return 0;
}
gcc -Wall -g test.c test
但符号test
就在那里!
答案 0 :(得分:0)
如果函数足够简单并且从不使用它的地址,那么static
它可能已被内联然后被丢弃(因为不可能从其他地方调用它)。