借用阿甘老媽的一句話:「life is like a box of chocolates, you never know what you're going to get.」。
自己做夢也不會想到,多年之後又回到linux的世界中。生活中的事情有太多不確定性,但如果你準備的夠充分,再怎麼變化,也都在你的掌控之中。
今天來把自己多年都沒有完全記下的gdb相關的東西寫在blog裡,隨我到任何國度也可以信手捻來。
gdb是linux世界中最常用的除錯工具,主要功能就是下斷點、單步、看變數的值,以及反彙編功能。其實並不複雜,而且你可以man一下它,就不怕自己忘記命令了。
前提:編譯出可除錯的**,例如:gcc -g test.c -o test
用gdb除錯:gdb test
1.list命令(l)
列出**,可以帶行數或方法名,例如:l 13 或 l main
2.run命令
將程式跑起來
3.break命令
下斷點,例如:
(gdb) break 函式名
(gdb) break 行號
(gdb) break 檔名:行號
(gdb) break 檔名:函式名
(gdb) break +偏移量
(gdb) break -偏移量
(gdb) break *位址
4.單步
next(n)單步執行,不會進入函式內部
step(s)卻可以
until(u)直接退出迴圈體
5.continue(c)
繼續,直到程式結束或下乙個斷點
6.print
程式停住後,列印執行資料
7.watch
觀察某個表示式,一旦有變化,就停止執行並列印出相應的值。
8.examine
檢視記憶體位址中的值
9.jump
引數可以是行號也可以是位址
10.signal
產生乙個訊號量,1~15(參見unix的訊號量)
11.return
強制返回
12.call
強制呼叫某函式
13.info
檢視資訊如:
info registers
info all-registers
info registers 《指定暫存器》
info break
info watchpoints
info signals
info handle
14.disassemble
反彙編,如:
disass main
參考:《linux裝置驅動開發詳解》
《c語言開發手冊》
《debug hacks》
gdb基本命令
為了記憶,就打上來與大家分析,常用的gdb除錯命令 bt 檢視各級函式呼叫及引數 finish 連續執行到當前函式返回為止,然後停下來等待命令 f 選擇棧幀 i 檢視當前棧幀區域性變數的值 l 列出源 list 行號 列出從第幾行開始的源 list 函式名 列出某個函式的源 n 執行下一條語句 p ...
gdb基本命令
可以參考 命令描述backtrace 或bt 檢視各級函式呼叫及引數 finish 連續執行到當前函式返回為止,然後停下來等待命令 frame 或f 幀編號 選擇棧幀 info 或i locals 檢視當前棧幀區域性變數的值 list 或l 列出源 接著上次的位置往下列,每次列10行 list 行號...
GDB 基本命令
什麼是gdb 為什麼需要gdb?沒有gdb行不行?有了gdb有哪些好處?gdb是gnu開源公司開發的乙個強大的程式除錯工具。如果在linux下執行程式,gdb這個工具會有比vc,bcb更加強大的功能。gdb主要作用 就是幫助我們自動完成設定好的操作 啟動程式,可以按照自定義的要求執行程式 可以讓被除...