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