一、list命令shell
在gdb中運行list命令(縮寫l)能夠列出代碼,list的具體形式包括: •list <linenum> ,顯示程序第linenum行周圍的源程序數組
二、run命令函數
在gdb中,運行程序使用run命令。在程序運行前,咱們能夠設置以下4方面的工做環境: •程序運行參數調試
三、break命令對象
在gdb中用break命令來設置斷點,設置斷點的方法包括: •break <function> 在進入指定函數時停住,C++中可使用class::function或function(type, type)格式來指定函數名。 •break <linenum> 在指定行號停住。 •break +offset / break -offset 在當前行號的前面或後面的offset行停住,offiset爲天然數。 •break filename:linenum 在源文件filename的linenum行處停住。 •break filename:function 在源文件filename的function函數的入口處停住。 •break *address 在程序運行的內存地址處停住。 •break break命令沒有參數時,表示在下一條指令處停住。 •break ... if <condition>內存
四、單步命令it
在調試過程當中,next命令用於單步執行,相似VC++中的step over。next的單步不會進入函數的內部,與next對應的step(縮寫s)命令則在單步執行一個函數時,會進入其內部,相似VC++中的step into。下面演示了step命令的執行狀況,在23行的add()函數調用處執行step會進入其內部的「return a+b;」語句:io
五、continue命令function
當程序被停住後,可使用continue命令(縮寫c,fg命令同continue命令)恢復程序的運行直到程序結束,或到達下一個斷點,命令格式爲:class
六、print命令
在調試程序時,當程序被停住時,可使用print命令(縮寫爲p),或是同義命令inspect來查看當前程序的運行數據。print命令的格式是: 01.print <expr> 02.print /<f> <expr>
<expr>是表達式,是被調試的程序中的表達式,<f>是輸出的格式,好比,若是要把表達式按16進制的格式輸出,那麼就是/x。在表達式中,有幾種GDB所支持的操做符,它們能夠用在任何一種語言中,「@」是一個和數組有關的操做符,「::」指定一個在文件或是函數中的變量,「{<type>} <addr>」表示一個指向內存地址<addr>的類型爲type的一個對象。
七、watch命令
watch通常來觀察某個表達式(變量也是一種表達式)的值是否有變化了,若是有變化,立刻停住程序。咱們有下面的幾種方法來設置觀察點: watch <expr>:爲表達式(變量)expr設置一個觀察點。一量表達式值有變化時,立刻停住程序。rwatch <expr>:當表達式(變量)expr被讀時,停住程序。awatch <expr>:當表達式(變量)的值被讀或被寫時,停住程序。
gdb 可讓您經過使用 shell 命令在不退出調試環境的狀況下運行 shell 命令,調用形式是 'shell [commandline]',這有助於在調試時更改源代碼。