1.2、gdb功能介绍(1)gdb server运行在设备上,运行要调试的程序并监听是否有客户端要连接;gdb运行在虚拟机或者编译服务器上,通过向gdb server发送命令,完成调试;
(2)gdb直接运行在调试机上,运行要调试的程序并用命令来调试程序;
(3)gdb和gdb server在连接方式上有区别,但是在gdb的命令上几乎一样;
1.3、gdb源码获取(1)启动你的程序,按照你自定义的方式运行程序;
(2)可以让被调试的程序,在你设置的指定断点处停住;
(3)当程序被停住时,查看此时程序中发生的事情;
(4)动态的改变程序的执行环境;
1.4、被gdb调试的程序的要求(1)源码下载网址:http://ftp.gnu.org/gnu/gdb/;
(2)编译gdb源码:
a)配置configure,(主要是配置交叉编译工具链、安装目录;
b)运行Makefile:make & make install;
(3)大概率不能直接编译通过,不建议去编译源码,问老员工或者芯片的技术支持有没有对应平台的gdb工具;
2、gdb的使用方法(1)被GDB调试的程序,不能被arm-linux-stripe,否则程序没有符号信息。就是要用debug版本的sonia来调试;
(2)在gdb调试时,有的变量看不到值,显示被优化:是因为在编译程序的时候,优化等级过高,可在去掉-o2等优化编译选项;
(3)编译源码时需要加上“-g”编译选项;(创建符号表,符号表包含了程序中使用的变量名称的列表)
3、gdb server使用方法 3.1、设备端(1)程序未运行:gdb + 程序;
(2)程序已经运行:gdb -p + 进程号;
gdb_server 10.6.5.204:2345 ./app
3.2、虚拟机或者编译服务器端(1)gdb_server:gdb server工具;
(2)10.6.5.204:虚拟机或者编译服务器的ip地址;
(3)2345:是监听的端口号,和客户端要匹配;
(4)./app:要调试的程序;
(1)arm-himix200v002-linux-gdb ./app //进入gdb命令行,连接gdb server (2)target remote 10.35.232.236:2345
4、gdb下的常见指令介绍 4.1、gdb中使用linux命令(1)先用gdb运行要调试的程序,注意这里的程序要和gdb_server运行的程序一样;
(2)进入gdb命令行,连接服务器连接gdb server,注意两边的IP地址和端口号要匹配;
(3)10.35.232.236:这是设备的ip地址;
4.2、常用指令只需要在命令前加上shell即可;
| 命令 | 解释 |
|---|---|
| run | 运行程序 |
| continue | 进行运行程序 |
| next | 单步运行 |
| quit | 退出gdb |
| break | 设置断点 |
| 打印参数值 | |
| show args | 查看参数 |
| info args | 查看当前函数的参数及其值 |
| info function | 显示所有函数名称 |
| bt | 查看栈信息 |
| set args | 指定运行时参数:set args 10 20 30 |
break:设置断点,简写b b func 断点函数 b file:linenum 断点文件行号 b *address 断点地址 enable/disable:使能/去使能断点 en/dis 1 使能/去使能断点1 en/dis 使能/去使能所有断点 delete:删除断点 delete 1 删除断点1 delete 删除所有断点 info breakpoints:显示所有断点信息 checkpoint:记录断点状态,用于恢复断点。不可用于多线程 checkpoint restart 1 Info checkpoint:显示checkpoint信息 watch:跟踪变量值,当变量值发生变化时,暂停 watch a 局部变量,在跳出当前函数时会失败 watch *0x600af0 Info watchpoint:显示watchpoint信息



