當我在gdb中運行核心文件時,gdb沒有顯示錯誤來自哪裏或者哪個行 在導致問題的應用程序中。gdb不打印調試信息
我使用編譯器選項-g -DDEBUG -D_DEBUG,但它似乎沒有幫助。
任何幫助,將不勝感激,謝謝。
當我在gdb中運行核心文件時,gdb沒有顯示錯誤來自哪裏或者哪個行 在導致問題的應用程序中。gdb不打印調試信息
我使用編譯器選項-g -DDEBUG -D_DEBUG,但它似乎沒有幫助。
任何幫助,將不勝感激,謝謝。
你可能會吹你的堆棧。例如,運行下面的程序
#include <stdio.h>
#include <string.h>
int main(void)
{
int a[10];
memset(a, 0, 100 * sizeof a[0]);
return 0;
}
,然後運行對所得core
收率
$ gdb oflow core [...] Core was generated by `./oflow'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000000000 in ??()
的where
和bt
命令的輸出gdb
後不是非常有用:
(gdb) where #0 0x0000000000000000 in ??() #1 0x0000000000000000 in ??() (gdb) bt #0 0x0000000000000000 in ??() #1 0x0000000000000000 in ??()
好的,問題解決了。我有一個遞歸函數返回一個字符串,但問題是沒有什麼被返回,但我仍然不明白爲什麼調試信息沒有生成,當我一步一步通過代碼它顯示行號我正在步進通過,但我想,因爲它得到一個錯誤的行失蹤了?所以沒有斷點出錯的地方?當它試圖通過遞歸到函數來連接它時,使用「+ =」它會進入第二個調用,但是會在函數結束時崩潰,因爲沒有返回任何內容。但是不應該在它沒有返回的行上的第一個函數調用上產生錯誤?
謝謝。
錯誤可能發生在庫函數內部。你嘗試過輸入'backtrace'嗎? – Artelius 2009-12-22 22:42:42