5、常用的GDB命令:
load:装入一个程序
symbol-file:装入符号库文件,可以是用-g参数编译的可执行文件。
f(ile):指定一个可执行文件进行调试,gdb将读取些文件的调试讯息,如f a.exe
l(ist):列程序出源文件
r(un) :装载完要调试的可执行文件后,可以用run命令运行可执行文件
b(reak):设置断点(break point),如b 25,则在源程序的第25行设置一个断点,当程序执行到第25行时,就会产生中断;也可以使用b funcname,funcname为函数的名称,
当程序运行到��点停下来时,
c(ontinue):c命令可以另中断的程序继续执行,直到下一个中断点或程序结束
p(rint):输入某个变量的值,如程序定义了一个int a的就是,p a就会输出aa的当前值
n(ext):程序执行到断点时中断执行,可以用n指令进行单步执行
s(tep):程序执行到断点时中断执行,可以用s指令进行单步执行进某一函数
q(uit):退出GDB
使用简化命令,如l,和完整命令list,效果是一样的。
6、需要注意的问题
1)、简化命令f不一定能用,gdb会提示
(gdb) f gprs
No symbol table is loaded. Use the "file" command.
可用完整命令file代替
(gdb) file gprs
Reading symbols from /home/www.linuxidc.com/arm2410s/gprs...done.
2)、交错调试时我们不使用r(un)来执行程序。因为执行完target remote命令后,目标板程序已经在运行,所有应该用continue命令而不是run命令。如果你选择了重新运行程序,gdb会提示不知道怎么运行程序,因为开发板那边gpbserver已经“Killing inferior”退出了.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/www.linuxidc.com/arm2410s/gprs
Don't know how to run. Try "help target".