天天看點

幾則gdb使用技巧

幾則gdb使用技巧

gdb的功能強大,與帶GUI的調試器相比有過之而無不及,使用也就相對複雜一些。一方面是它的親和力稍差,畢竟是給程式員用的,不用做得傻瓜化。另外一方面它的指令太多,我們常常淺嘗辄止,隻記得幾個常用的指令就知足了,沒有充分發揮它的潛力。今天要調試一段ARM彙編代碼,按正常方法調試彙編代碼非常麻煩,花了點時間看gdb的幫助,發現幾個技巧比較有用,這裡做個筆記。

1.         使用自定義指令。gdb内置的指令很多,這些指令都遵循unix的一貫原則,每個指令都隻有一個基本功能。指令的粒度比較細,可重用性會更高。自己要去組織這些基本指令,以形成功能更強大的指令。這可以用define來實作,如:

(gdb) define nid           

Type commands for definition of "nid".

End with a line saying just "end".

>ni

>disassemble $pc $pc+16

>end

2.         多視窗。GUI調試器可以同時打開多個小視窗,分别顯示寄存器、彙編和源代碼等。在gdb裡也可以做到,但同時最多隻能顯示兩個視窗,試了一下也很友善的。基本指令如下:

a)         `layout src' 僅顯示源代碼視窗。

b)        `layout asm' 僅顯示彙編代碼視窗。

c)        `layout split' 顯示源代碼和彙編代碼視窗。

d)        `layout regs' 顯示寄存器和源代碼視窗,或者寄存器和彙編代碼視窗。

e)         `layout next` 和 `layout prev' 切換視窗。

f)         ctrl + L 重新整理螢幕。

g)        `C-x 1' 單視窗模式。

h)        `C-x 2' 雙視窗模式。

i)          `C-x a' 回到傳統模式。

~~end~~