下面這一段**會出現segv錯誤。
#include int foo(void)
int main(void)
執行後如下:
$ ./foo
段錯誤 (核心已轉儲)
但是沒有發現 core 檔案。
需要設定一下。
ulimit -c unlimited
再次執行生成 core 檔案。
使用 gdb 除錯:
gdb ./foo ./core
core was generated by `./foo'.
program terminated with signal 11, segmentation fault.
#0 0x00000000004004c4 in foo () at foo.c:6
6 *i = 0;
(gdb) bt
#0 0x00000000004004c4 in foo () at foo.c:6
#1 0x00000000004004d5 in main () at foo.c:11
Linux下gdb的使用
一 編譯檔案生成可執行檔案 如果想用偵錯程式執行乙個可執行檔案,在用gcc編譯時必須加上 g選項。加上 g選項以後,gcc在編譯是會做以下額外的操作 1.建立符號表,符號表包含了程式中使用的變數名稱的列表。2.關閉所有的優化機制,以便程式執行過程中嚴格按照原來的c 進行。二 ulimit c unl...
linux下gdb的除錯使用
1.gdb除錯的物件是可執行檔案,而不是程式的源 因此在使用gcc編譯器時 需加 g選項。告訴gcc編譯器加入除錯資訊。例如 gcc g test.c o test 2.除錯gdb的格式是 例如 gdb test 3.在啟動gdb後,會顯示一段版權說明,如果要不顯示 加入 q即可 例如 gdb q ...
linux下如何使用gdb除錯
gdb是linux下非常好用的乙個除錯工具,雖然它是命令列模式的除錯工具,但是它的功能強大到你無法想象,這裡簡單介紹下gdb下常用的命令。首先編譯生成可執行檔案 這裡的test.c是乙個簡單的求前n項和的程式 gcc g test.c o test g選項告訴gcc在編譯程式時加入除錯資訊 接下來可...