linux下gdb调试基础

生成带有调试信息的可执行文件

参数作用
-g(必须添加)生成调试信息
-O(选填)关闭编译器优化选项
-Wall(选填)打开所有warming,可以尽量避免不必要的bug

生成带有调试信息的xxx可执行文件

gcc xxx.c -g -o xxx
//如果为cpp文件则将命令改为g++即可

启动gdb

打开gdb调试

gdb xxx //此时只是打开了gdb调试,并没有真正开始执行

启动gdb后的可选命令

命令作用
s(start)从程序的开头调试程序 (只能执行一次
r(run)存在断点的话则从断点处开始调试程序(只能执行一次
c(continue)执行下一步程序
q(quiit)退出gdb调试

显示文件信息
在这里插入图片描述
切换文件
在这里插入图片描述

设置显示行数

(gdb)set list(listsize) 20//设置为显示20行

设置/查看断点

命令作用
b(break)+行号在当前文件下行号处设置断点
b(break)+函数名在当前文件下函数名处设置断点
b(break)+文件名:行号指定文件行号处设置断点
b(break)+文件名:函数名指定文件函数名处设置断点
b(break)+行号+if 变量名==某个值 (条件断点)当变量满足某个值时程序停在该行号处(通常情况下在循环中条件断点用的多)
i b/info break查看设置的断点

查看断点举例

在这里插入图片描述

在这里插入图片描述
删除断点/设置断点状态

指令作用
d(delete)+行号/num1-numN删除指定行号/指定范围处断点
dis(disable)+行号/num1-numN设置指定行号/指定范围断点无效
ena(enable)+行号/num1-numN设置指定行号/指定范围断点有效

显示变量信息

(gdb)p 变量名
(gdb)p/xxx 变量名 //以/xxx格式输出 格式表参考下图

格式表
在这里插入图片描述

打印变量类型

(gdb)ptype 变量名

自动跟踪变量值

(gdb)display 变量名
(gdb)display/xxx 变量名 //以/xxx格式输出 格式表参考下图
(gdb)info display //显示跟踪了哪些变量,可以得到变量编号
(gdb)undisplay num/num1-numN //删除自动跟踪的变量
(gdb)disable display num //禁用跟踪变量值
(gdb)enable display num //激活跟踪变量值

单步调试

(gdb)step (遇到函数体会进入)
(gdb)next(跳过函数体)
(gdb)finish(从函数体内部跳出,函数内部不能有断点,若有断点
需要删除断点)
(gdb)until(跳出循环体,循环内部不能有断点)  

设置变量

set var xxx=xxx //可以用来跳出循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值