linux 下程式崩潰。先要生成core檔案方可除錯(這裡test為被除錯程式)
1.檢視core檔案(相當於windows下的dump)大小,如果為0,則不會生成core檔案
ulimit -c 檢視core檔案大小
ulimit -c filesize 設定大小為filesize
ulimit -c unlimited 設定core大小為無限制
2.啟動被除錯程式
進入到被除錯程式目錄,輸入gdb ./test 回車
如果被除錯程式有引數需設定,則 set args ***x 回車
也可 r arg1 arg2
3.設定(刪除,使能,失能)斷點
如果是c++程式,則
b classname::fun 即給類名為classname的成員函式fun下斷點
也可 b ***.cpp:linenum 即給***.cpp的linenum 行下斷點
下好斷點後,可檢視斷點
info b 或者 info break
刪除斷點
delete number(斷點編號) 或者delete all
enable b number (使能斷點)
disable b number (失能斷點)
4.執行程式 r
5.單步執行(步過,不進入函式內部)
n 6.單步步入(步入,進入函式內部)
s 7.執行到下個斷點
c (contune)
8. 檢視變數
p var(變數名)或者p addr (記憶體位址)
9.列出源程式
list 無引數
顯示上次內容之前或之後的10行內容
list 1個引數,list
顯示引數行 line-number之前和之後的10行內容
list 2個引數,list
說明:line1為顯示的起始行,line2為結束行
再次回車後,即執行list命令,顯示內容後面的10行命令
最後:
quit 退出gdb
linux下安裝gdb及簡單使用
unix及unix like下的除錯工具 傳送門 wget gdb 8.2.1.tar.gz tar xzvf gdb 8.2.1.tar.gz cd gdb 8.2 configure prefix usr local gdb make make install gdb v 如果正常就說明就安裝好...
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 ...