實驗環境:ubuntu18.04桌面版
在檔案目錄編寫簡單的helloworld的程式。
#include
intmain
(void
)
使用gcc命令編輯檔案,執行檔案正常。
以下為gdb命令:
**功能
file
裝入想要除錯的可執行檔案。
kill
終止正在除錯的程式。
list
列出產生執行檔案的源**的一部分。
next
執行一行源**但不進入函式內部。
step
執行一行源**而且進入函式內部。
run執行當前被除錯的程式。
c繼續執行程式。
quit
終止gdb。
watch
使你能監視乙個變數的值而不管它何時被改變。
backtrace
棧跟蹤,查出**被誰呼叫。
檢視變數的值。
make
使你能不退出gdb就可以重新產生可執行檔案。
shell
使你能不退出gdb就可以重新產生可執行檔案。
whatis
顯示變數或函式型別。
break
在**里設斷點,這將使程式執行到這裡時被
掛起。info break
顯示當前斷點清單,包括到達斷點處的次數等。
info files
顯示被除錯檔案的詳細資訊。
info func
顯示所有的函式名稱。
info local
顯示當函式中的區域性變數資訊。
info prog
顯示被除錯程式的執行狀態。
delete [n]
刪除第n個斷點。
disable[n]
關閉第n個斷點。
enable[n]
開啟第n個斷點。
ptype
顯示結構定義。
set variable
設定變數的值。
call name(args)
呼叫並執行名為name,引數為args的函式。
finish
終止當前函式並輸出返回值。
return value
停止當前函式並返回value給呼叫者。
break命令的使用在檔案目錄輸入gdb進入– 根據行號設定斷點:
• (gdb) break linenum
– 根據函式名設定斷點: • (gdb) break funcname
– 執行非當前原始檔的某行或某函式時停止執行: • (gdb) break filename:linenum
• (gdb) break filename:funcname
– 根據條件停止程式執行: • (gdb) break linenum if expr
• (gdb) break funcname if expr
由於程式沒錯,除錯正常進行
程式除錯是處理程式錯誤的方式。對於上千行的**,我們只是看已經十分難找出此程式的錯誤了,使用程式除錯顯得十分重要。
參考:補充__gdb偵錯程式及除錯方法.pdf
gdb 偵錯程式的使用
gdb 偵錯程式的使用 在用gcc編譯程式時,加上 g 引數,然後執行 gdb 可執行程式名 就進入gdb除錯模式 常用指令 1.l list 列出程式清單 2.r run 執行程式 3.b breakpoint 設定斷點,格式 b 行號 函式名 4.b num if i 20 設定斷點的觸發條件 ...
Linux偵錯程式 gdb的使用
1 背景 a.程式的發布方式有兩種 debug模式和release模式 b.linux gcc g 出來的二進位制程式,預設是release模式 c.要使用gdb除錯,必須在源 生成二進位制程式的時候,加上 g選項 2 使用 語法 gdb filename 退出 ctrl d或者quit 可簡寫q ...
Linux偵錯程式gdb的使用
在源 生成二進位制程式時加上 g。1 使用gdb 需要除錯的檔名命令開始除錯 2 使用ctrl d或者quit退出 3 list l 顯示源 每次列10列 4 l list 函式名 顯示函式的源 5 r run 執行程式,相當於vs中的f5 6 n next 單條執行,相當於vs中的f10逐過程 7...