gdb工具使用方法和常用指令介绍
Posted 正在起飞的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb工具使用方法和常用指令介绍相关的知识,希望对你有一定的参考价值。
1、gdb工具介绍
1.1、gdb和gdb server的区别
(1)gdb server运行在设备上,运行要调试的程序并监听是否有客户端要连接;gdb运行在虚拟机或者编译服务器上,通过向gdb server发送命令,完成调试;
(2)gdb直接运行在调试机上,运行要调试的程序并用命令来调试程序;
(3)gdb和gdb server在连接方式上有区别,但是在gdb的命令上几乎一样;
1.2、gdb功能介绍
(1)启动你的程序,按照你自定义的方式运行程序;
(2)可以让被调试的程序,在你设置的指定断点处停住;
(3)当程序被停住时,查看此时程序中发生的事情;
(4)动态的改变程序的执行环境;
1.3、gdb源码获取
(1)源码下载网址:http://ftp.gnu.org/gnu/gdb/;
(2)编译gdb源码:
a)配置configure,(主要是配置交叉编译工具链、安装目录;
b)运行Makefile:make & make install;
(3)大概率不能直接编译通过,不建议去编译源码,问老员工或者芯片的技术支持有没有对应平台的gdb工具;
1.4、被gdb调试的程序的要求
(1)被GDB调试的程序,不能被arm-linux-stripe,否则程序没有符号信息。就是要用debug版本的sonia来调试;
(2)在gdb调试时,有的变量看不到值,显示被优化:是因为在编译程序的时候,优化等级过高,可在去掉-o2等优化编译选项;
(3)编译源码时需要加上“-g”编译选项;(创建符号表,符号表包含了程序中使用的变量名称的列表)
2、gdb的使用方法
(1)程序未运行:gdb + 程序;
(2)程序已经运行:gdb -p + 进程号;
3、gdb server使用方法
3.1、设备端
gdb_server 10.6.5.204:2345 ./app
(1)gdb_server:gdb server工具;
(2)10.6.5.204:虚拟机或者编译服务器的ip地址;
(3)2345:是监听的端口号,和客户端要匹配;
(4)./app:要调试的程序;
3.2、虚拟机或者编译服务器端
(1)arm-himix200v002-linux-gdb ./app
//进入gdb命令行,连接gdb server
(2)target remote 10.35.232.236:2345
(1)先用gdb运行要调试的程序,注意这里的程序要和gdb_server运行的程序一样;
(2)进入gdb命令行,连接服务器连接gdb server,注意两边的IP地址和端口号要匹配;
(3)10.35.232.236:这是设备的ip地址;
4、gdb下的常见指令介绍
4.1、gdb中使用linux命令
只需要在命令前加上
shell
即可;
4.2、常用指令
命令 | 解释 |
---|---|
run | 运行程序 |
continue | 进行运行程序 |
next | 单步运行 |
quit | 退出gdb |
break | 设置断点 |
打印参数值 | |
show args | 查看参数 |
info args | 查看当前函数的参数及其值 |
info function | 显示所有函数名称 |
bt | 查看栈信息 |
set args | 指定运行时参数:set args 10 20 30 |
4.3、断点设置指令
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信息
开发者涨薪指南
48位大咖的思考法则、工作方式、逻辑体系
以上是关于gdb工具使用方法和常用指令介绍的主要内容,如果未能解决你的问题,请参考以下文章