gdb是linux環境下最強大的除錯工具,可以除錯未執行的程式或者正在執行的程式,還可以分析程式崩潰的coredump檔案,這些的前提是,程式在編譯時新增了-g選項開啟了除錯資訊。
使用方法:
gdb program: 對於有引數的,可以通過gdb內執行 set args param 來設定引數,或者gdb --args ./program arg1 arg2
gdb attach pid:直接掛載pid程序,此時程序會停止執行,需要命令c來繼續執行
gdb program coredumpname :分析程式產生的coredump檔案
1. 打斷點
使用break進行打斷點 ,簡寫為b , 對程式的第三行進行打斷點: b 3
如果是多個檔案,可以對某個檔案的某一行打斷點,如對gdb_test.c的第三行打斷點: b gdb_test.c:3
可以對某個函式進行打斷點 ,對本程式中func()函式打斷點: b func
同理也可以對多個檔案中的某乙個檔案的函式打斷點 : b gdb_test.c:func
2. gdb常用命令
l :檢視原**(l n,從第n行開始檢視**。l 函式名:檢視具體函式)
n:單步除錯(逐過程,函式直接執行)
s:單步除錯(逐語句:跳入自定義函式內部執行)
fin: 跳出函式
c:從當前位置開始繼續執行程式
r:從頭開始執行程式
return
:它會跳過當前函式後面的語句直接返回,返回值可以自定義,緊跟在return
命令後面即可
display:追蹤檢視具體變數值
watch:被設定觀察點的變數發生修改時,列印顯示
info b:檢視斷點
delete breakpoints:刪除所有斷點
delete breakpoints id:刪除編號為id的斷點
info inferiors :檢視程序
info threads :檢視執行緒
thread n(n代表第幾個執行緒,不是執行緒id):切換執行緒
bt : 檢視當前執行緒棧結構
f frameid : 調到指定幀
info frame : 檢視當前幀暫存器資訊
disassemble : 檢視當前幀函式的反彙編**
ptype p : 顯示變數的型別,如果是乙個物件,可以顯示資料字段和成員方法,如果我想要真正的型別,必須先設定print物件的變數: set print object on
GDB 除錯總結
啟動 gdb gdb 然後 gdb file 執行 gdb run 該程式本身的命令列引數 檢視 gdb list 簡寫為 gdb l 技巧 gdb list 1,20 檢視1到 20行的 使用斷點 建立斷點 gdb break 可以簡寫為 gdb b gdb b 這種是為還沒有開啟的源 設定斷點 ...
GDB除錯總結
一 core分析 1 檢視命令 ulimit c 啟動命令 ulimit c ulimited 檢視core檔案 gdb c core.a.out 2 生成core檔案的路徑在檔案 etc sysctl.conf中 cat etc sysctl.conf sysctl.conf檔案中科院設定的格式符...
GDB 基礎除錯總結
gdb是乙個由gnu開源組織發布的 unix linux作業系統下的 基於命令列的 功能強大的程式除錯工具。基礎除錯命令 命令 解釋 示例 file 檔名 載入被除錯的可執行程式檔案。因為一般都在被除錯程式所在目錄下執行gdb,因而文字名不需要帶路徑。gdb file gdb sample rrun...