Linux下使用gdb除錯跟蹤程序

2021-10-04 21:22:00 字數 2018 閱讀 3344

可以使用gdb、strace命令(推薦gdb),本文主要介紹使用gdb在linux下直接對程序進行跟蹤除錯

若想使用gdb對程序除錯,需要在編譯程式時加入相關的選項

set(cmake_build_type "debug")

set(cmake_cxx_flags_debug "$env -o0 -wall -g2 -ggdb")

set(cmake_cxx_flags_release "$env -o3 -wall")

參考:舉例說明:

gcc -g test.c -o test(-g選項告訴gcc在編譯程式時加入除錯資訊,-o指定輸出程式名稱)

參考:gdb ./fftranscode                      //啟動並除錯

(gdb)set args *********          //設定引數

s / start                     #開始除錯,停在第一行**處,(gdb)start

l [file name:line number] / list [file name:line number]                    #list的縮寫檢視源**,(gdb) l [number/function]

b #b: breakpoint的簡寫,設定斷點。(gdb) b 10

b #b: breakpoint的簡寫,設定斷點。(gdb) b main

b filename:[line/function]                #b:在檔案filename的某行或某個函式處設定斷點

i b / i breakpoints / info break         #檢視所有斷點,i:info 的簡寫。(gdb)i breakpoints

d [breakpoint number] / delete [breakpoint number]     

#d: delete breakpoint的簡寫,刪除指定編號的某個斷點,或刪除所有斷點。斷點編號從1開始遞增。 (gdb)d 1

s                     #s: step執行一行源程式**,如果此行**中有函式呼叫,則進入該函式;(gdb) s

n                     #n: next執行一行源程式**,此行**中的函式呼叫也一併執行。(gdb) n

c                       #continue的簡寫,繼續執行被除錯程式,直至下乙個斷點或程式結束。(gdb) c

r                      #run的簡寫,執行被除錯的程式。如果此前沒有下過斷點,則執行完整個程式;如果有斷點,則程式暫停在第乙個可用斷點處。(gdb) r

finish                #函式結束

p [var]              #print的簡寫,顯示指定變數(臨時變數或全域性變數 例如 int a)的值。(gdb) p a

display [var]                #display,設定想要跟蹤的變數(例如 int a)。(gdb) display a

undisplay [varnum]     #undisplay取消對變數的跟蹤,被跟蹤變數用整型數標識。(gdb) undisplay 1

set args               #可指定執行時引數。(gdb)set args 10 20

show args           #檢視執行時引數。

q                          #quit的簡寫,退出gdb除錯環境。(gdb) q 

help [cmd]           #gdb幫助命令,提供對gdb名種命令的解釋說明。如果指定了「命令名稱」引數,則顯示該命令的詳細說明;如果沒有指定引數,則分類顯示所有gdb命令,供使用者進一步瀏覽和查詢。(gdb)help

回車                    #重複前面的命令,(gdb)回車

參考文章:

bt / backtrace     #檢視當前呼叫堆疊

focus / layout      #檢視當前指定的**

參考:

gdb 跟蹤除錯

要進行除錯程式首先要生成乙個含有除錯資訊的執行程式命令如下 此時便會生成乙個含有除錯資訊的可執行檔案,然後便可以用 gdb 去除錯這個程式了,進入除錯程式命令,但是如果用 gdb 去除錯乙個未包含除錯資訊的可執行檔案則會發生錯誤 執行 gdb gdb 啟動常用的引數 從指定檔案中讀取符號表資訊,並把...

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在編譯程式時加入除錯資訊 接下來可...