精确定位并消除分段错误

时间:2011-12-14 22:45:12

标签: c

通过GDB,我已经确定在这段代码中的某个地方发生了段错误。

readInfo(fd)

int fd;

 {
  char str[200];
  while(readInfo(fd,str))
   printf("%s\n",str);
 }

此代码尝试完成的任务是读取服务器发送给它的信息。我不太确定问题是什么。任何提示将不胜感激。

编辑:更具体一点:

Program received signal SIGSEGV, Segmentation fault.
0x0804864b in readInfo ()

1 个答案:

答案 0 :(得分:0)

我有三个提示:

  1. 使用调试符号编译程序。这样,您就可以看到崩溃的实际代码,以及即使在崩溃后也可以打印变量值。
  2. 编写两个函数 - 非递归版本和递归版本。这并不总是必要的,但是因为你要添加一个参数,所以它适合你。
  3. 在那里的某个地方,您实际上必须编写一些从文件描述符中读取的代码。