2011-12-14 24 views
-1

通過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() 
+0

我有一個名爲`a`的函數有問題。有什麼問題,我該如何解決它? – 2011-12-14 22:47:42

回答

0

我有三個祕訣:

  1. 編譯與調試符號的程序。這樣你就可以看到你崩潰的實際代碼,以及即使在崩潰之後也能打印變量值。
  2. 編寫兩個函數 - 非遞歸版本和遞歸版本。這並不總是必要的,但是因爲您添加了一個參數,所以它適合您。
  3. 在那裏的某個地方,你將不得不寫一些從文件描述符中讀取的代碼。