搭建交叉调试环境Arm(2)


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".

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24932.html