嵌入式学习小组
登录
直播中
王刚
7年用户
1244经验值
私信
关注
GDB的常用命令是什么?
开启该帖子的消息推送
GDB的常用命令是什么?
GDB的使用条件是什么?
GDB如何调试?
回帖
(1)
徐远瑶
2021-12-24 16:19:55
GDB的介绍
GDB :GDB全称:GNU Debugger,是GNU工程为GNU操作系统开发的调试器。它可以用于调试C、C++、Objective-C、Pascal、Ada等语言编写的程序。被调试的程序可以跟GDB运行于同一台电脑,也可运行于不同电脑。
GDB的常用命令
file 装入想要调试的可执行文件
kill 终止正在进行的调试程序
list 列出产生执行文件的源代码的一部分
next 执行一行源代码但不进入函数内部
step 执行一行源代码并可以进入函数内部
run 执行当前被调试的程序
c 继续运行程序
quit 终止gdb
watch 使你能监视一个变量的值而不管它何时被改变
backtrack 栈跟踪,查看代码被谁调用
print 查看变量的值
make 不用退出gdb,就可以重新生成可执行文件
shell 不用退出gdb,就可以使用UNIX shell命令
whatis 显示变量或者函数类型
break 设置断点
info break 显示当前断点信息,包含到达断点处的次数
info files 显示被调试文件的详细信息
info func 显示所有函数名称
info local 显示当前的函数的局部变量
info prog 显示被调试程序的执行状态
delete [n] 删除第n个断点
disable [n] 关闭第n个断点
enable [n] 开启第n个断点
ptype 显示结构定义
set variable 设置变量的值
call name(args) 调用并执行为name,参数为args的函数
Finish 终止当前函数并输出返回值
return value 停止当前函数并返回value给调用者
GDB的使用
GDB的使用条件
程序要用GDB调试,需要添加调试信息。
添加方法:
gcc的-g选项为程序添加调试信息。
例如:gcc –g –o hello hello.c
启动gdb
• gdb [程序名]
实例
1.首先我们用vim编辑器编写名字为RevertNum.c的程序,代码如下:
#include
void ShowRevertNum(int iNum){ while (iNum > 10) {printf("%d", iNum % 10); iNum = iNum / 10; } printf("%dn", iNum);}int main(void){ int iNum; printf("Please input a number :"); scanf("%d", &iNum); printf("After revert : "); ShowRevertNum(iNum);} 此段程序的功能是实现实现整形数据反转。
2.用Gcc编译,代码如下:
3.输入gdb +文件名启动gdb,如下:
得到:
4.输入l显示代码,输入list显示主程序:
5.通过行号设置断点,我设置的是15行,并输入info b 查看断点:
6.通过函数名设置断点,并输入info b 查看所有的断点:
7.执行程序
8.输入whatis iNum和print iNum查看变量类型和变量内容
9.执行程序,输入值为123
10.得到结果
心得体会
通过本次实验,我基本上掌握了GDB调试的方法。但还是有很多不足,以后慢慢调试,慢慢进步。
GDB的介绍
GDB :GDB全称:GNU Debugger,是GNU工程为GNU操作系统开发的调试器。它可以用于调试C、C++、Objective-C、Pascal、Ada等语言编写的程序。被调试的程序可以跟GDB运行于同一台电脑,也可运行于不同电脑。
GDB的常用命令
file 装入想要调试的可执行文件
kill 终止正在进行的调试程序
list 列出产生执行文件的源代码的一部分
next 执行一行源代码但不进入函数内部
step 执行一行源代码并可以进入函数内部
run 执行当前被调试的程序
c 继续运行程序
quit 终止gdb
watch 使你能监视一个变量的值而不管它何时被改变
backtrack 栈跟踪,查看代码被谁调用
print 查看变量的值
make 不用退出gdb,就可以重新生成可执行文件
shell 不用退出gdb,就可以使用UNIX shell命令
whatis 显示变量或者函数类型
break 设置断点
info break 显示当前断点信息,包含到达断点处的次数
info files 显示被调试文件的详细信息
info func 显示所有函数名称
info local 显示当前的函数的局部变量
info prog 显示被调试程序的执行状态
delete [n] 删除第n个断点
disable [n] 关闭第n个断点
enable [n] 开启第n个断点
ptype 显示结构定义
set variable 设置变量的值
call name(args) 调用并执行为name,参数为args的函数
Finish 终止当前函数并输出返回值
return value 停止当前函数并返回value给调用者
GDB的使用
GDB的使用条件
程序要用GDB调试,需要添加调试信息。
添加方法:
gcc的-g选项为程序添加调试信息。
例如:gcc –g –o hello hello.c
启动gdb
• gdb [程序名]
实例
1.首先我们用vim编辑器编写名字为RevertNum.c的程序,代码如下:
#include
void ShowRevertNum(int iNum){ while (iNum > 10) {printf("%d", iNum % 10); iNum = iNum / 10; } printf("%dn", iNum);}int main(void){ int iNum; printf("Please input a number :"); scanf("%d", &iNum); printf("After revert : "); ShowRevertNum(iNum);} 此段程序的功能是实现实现整形数据反转。
2.用Gcc编译,代码如下:
3.输入gdb +文件名启动gdb,如下:
得到:
4.输入l显示代码,输入list显示主程序:
5.通过行号设置断点,我设置的是15行,并输入info b 查看断点:
6.通过函数名设置断点,并输入info b 查看所有的断点:
7.执行程序
8.输入whatis iNum和print iNum查看变量类型和变量内容
9.执行程序,输入值为123
10.得到结果
心得体会
通过本次实验,我基本上掌握了GDB调试的方法。但还是有很多不足,以后慢慢调试,慢慢进步。
举报
更多回帖
rotate(-90deg);
回复
相关问答
UNIX
常用命令
2012-08-20
2435
请问
常用命令
有哪些
2019-06-02
960
docker的
常用命令
有哪些?
2020-11-06
6264
Linux的
常用命令
有哪些呢?分别有何作用
2021-12-27
851
IMX6ULL开发板Ubuntu
常用命令
汇总
2020-12-29
1286
请问嵌入式Linux GCC
常用命令
有哪些?
2021-04-19
1533
Linux操作系统具有哪些特性优点?
常用命令
及技巧有哪些?
2021-10-14
1185
Linux文件系统的类型和
常用命令
2020-12-30
1993
请问linux有哪些
常用
的
命令
和编辑器?
2020-11-05
2063
Hi3861开发板串口看不到
命令
行是为什么?
2022-03-17
2394
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分