GDB常用指令

245 篇文章 18 订阅
36 篇文章 1 订阅

摘抄整合,勿喷

GDB

  • r:run,执行程序

  • n:next,下一步,不进入函数

  • s:step,下一步,会进入函数

  • b:breakponit,设置断点

  • l:list,查看源码

  • c:continue,继续执行到下一断点

  • bt:backtrace,查看当前调用栈

  • p:print,打印查看变量

  • q:quit,退出 GDB

  • whatis:查看对象类型

  • info breakpoints:查看所有的断点

  • info locals:查看局部变量

  • info args:查看函数的参数值及要返回的变量值

  • info frame:堆栈帧信息

  • info goroutines:查看 goroutines 信息。在使用前 ,需要注意先执行 source /usr/local/go/src/runtime/runtime-gdb.py

  • goroutine 1 bt:查看指定序号的 goroutine 调用堆栈

  • 回车:重复执行上一次操作

其中有几个指令的使用比较灵活

比如 l - list,查看代码


# 查看指定行数上下5行
(gdb) l 8
 
# 查看指定范围的行数
(gdb) l 5:8
 
# 查看指定文件的行数上下5行
l demo.go:8
 
# 可以查看函数,记得加包名
l main.main

把上面的 l 换成 b ,大多数也同样适用

# 在指定行打断点
(gdb) b 8
 
 
# 在指定指定文件的行打断点
b demo.go:8
 
# 在指定函数打断点,记得加包名
b main.main

还有 p - print,打印变量

# 查看变量
(gdb) p var
 
# 查看对象长度或容量
(gdb) p $len(var)
(gdb) p $cap(var)
 
# 查看对象的动态类型
(gdb) p $dtype(var)
(gdb) iface var
 
# 举例如下
(gdb) p i
$4 = {str = "cbb"}
(gdb) whatis i
type = regexp.input
(gdb) p $dtype(i)
$26 = (struct regexp.inputBytes *) 0xf8400b4930
(gdb) iface i
regexp.input: struct regexp.inputBytes *

变量的查看

基本的命令 p

使用这个命令,还可以查看结构体的各元素值。

例:p \*pstData;

复杂的命令

使用 dislpaly 命令,自动显示变量的值。

使用 command 命令,执行更复杂的操作,可以执行条件判断。

使用 call 命令,调用打印输出函数。

查看数组变量

p ArrayVar@ItemNum

格式控制

p /x Val

/c

/f

查看内存变量

x

查看局部变量

info local

设置程序入口参数

set args

程序变量的修改

set var=value

GDB变量的使用

历史变量的使用:$1, $2, …

方便变量(convenience variable)的使用

例:

set @q =0

p a\[@q++\]


调试输入参数

gdb 运行程序

例子程序名为prog,则在终端输入 gdb prog

gdb 设置参数

set args 可指定运行时参数。(如:set args 10 20 30 40 50
show args 命令可以查看设置好的运行参数。
若要再次修改参数,可再执行一遍 set args

运行

输入 r 运行
出错后,输入 bt 查看运行堆栈

退出

输入 quit

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值