我有一个运行良好的 C 程序,但在运行大约一周后,它似乎总是出现段错误。我已经用 -g 编译它并通过 gdb 运行它,它看起来像指向以下代码。
在我的主循环中,我调用了一个函数(实际上是为了尝试调试它崩溃的原因)
char config_debug[10];
然后我读取了一个 conf 文件并根据其中的当前设置,它将 config_debug 设置为 true
然后在我的程序中我称之为:
(第 312 行):
debug("send off data",config_debug);
这是功能:
int debug(char *debug_info, char *config_debug)
{
chomp(config_debug);
if ( strcmp(config_debug,"true") == 0 )
{
FILE *fp;
fp=fopen("/tmp/debug.log", "a");
(第 55 行):
fprintf(fp, debug_info);
fprintf(fp, "\n");
fclose(fp);
}
return 0;
}
void chomp(char *s) {
while(*s && *s != '\n' && *s != '\r') s++;
*s = 0;
}
任何人都可以看出上述两个功能有什么问题吗?
如果有帮助,这是一个跟踪:
Program terminated with signal 11, Segmentation fault.
#0 0xb6d7a67c in vfprintf () from /lib/arm-linux-gnueabihf/libc.so.6 (gdb) bt
#0 0xb6d7a67c in vfprintf () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0xb6d83cd8 in fprintf () from /lib/arm-linux-gnueabihf/libc.so.6
#2 0x0000a848 in debug (debug_info=0xc304 "send off data", config_debug=0xbec0cb5c "true") at station.c:55
#3 0x0000b614 in main (argc=1, argv=0xbec0cd94) at station.c:312