Linux 下使用 gdb 定位 crash 位置

2021-07-22 13:38:00 字數 573 閱讀 7044

下面這一段**會出現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在編譯程式時加入除錯資訊 接下來可...