1、使用gdb调试,需要编译时加入-g选项,编译c和汇编代码的FLAG中都加入

2、使用gdb调试的是可执行文件,elf格式的,如果通过file 命令查看得到的不是elf,而是text executable的,可以使用libtool --mode=execute gdb 程序名

     启动gdb时加入-tui,可以显示代码。还有一些带UI的调试工具,如ddd,和eclipse等

3、常用的一些gdb命令

n,next:单步执行

s,step:进入调用的函数内单步执行,finish可以1次执行完该函数

util:执行完一个循环

p,printf:打印变量的值

r,run:执行,后面可以加程序的入参

b,break:

delete:delete 断点号,delete ,delete 1-9

clear:

tb:temprobale break,1次有效

4、其他技巧

可以打开2个终端,一个用来通过VIM编辑代码,然后编译生成文件,在另一个终端里面gdb不用退出就可以更新,这样不用退出gdb后设置的断点等信息要重新设置

为某个断点设置command,每次执行到这个地方就会执行这个命令,特别适用于打印很多变量的情况

command breaknum

p xx

end

4、其他心得

linux以上的程序开发方便多了。直接编译,执行,调试。

不像BIOS等更底层的软件开发,要编译,烧录到目的机器上,调试手段很少,除了加打印和链接仿真器好像没其他手段了