i line # 查看当前行在内存中的地址 i line test.c:test# test.c中的test函数在内存中的地址 i line 10 # 第10行在内存中的地址 i b # 显示当前所有的断点信息 i b 1 # 显示第一个断点的信息
p 变量 # 查看某个变量的值 p /x(duotacf) 变量 # 按16(10、16无符号整形、8、2、16、字符、浮点)显示变量 p *a@10 # 显示有10个元素的数组a p x=4 # 修改x为4 p $ip# 打印ip寄存器
display 表达式 # 每次程序暂停时打印表达式的值,用法与p类似 i display # 查看当前的自动显示列表 disable display n # 禁用第n条自动显示 enable display n # 启用第n条自动显示 undisplay n # 删除第n条自动显示 d display n # 删除第n条自动显示
bt # 显示堆栈信息 bt +/-n # 打印栈顶(底)n层的信息
whatis 变量 # 显示变量类型 ptype 变量 # 显示变量详细类型
i r # 打印所有寄存器的值(不包括浮点寄存器) i all-registers # 打印所有寄存器的值(包括浮点寄存器) layout regs # 分屏显示寄存器和源代码
# 普通断点 b # 在下一行打断点 b 函数名 # 在指定函数入口打断点 b 5# 在第5行打断点 b +/-5# 在当前行+/-5行的地方打断点 b file:5# 在文件file的第5行打断点 b file:func # 在文件file的func函数入口打断点 b (上述参数) ifa==100# 如果a==100,就在指定地点打断点 b *地址 # 在内存地址处打断点 tb # 设置临时断点,此断点只会作用一次,具体参数与b类似 rb 正则表达式 # 在指定的函数的开头打断点
start# 开始执行程序,在main函数入口停止 start 参数 # 传递命令行参数 r# 开始运行程序,直到第一个断点 r 参数 # 传递命令行参数 r > 文件 # 重定向输出到文件
c # 执行程序,直到下一个断点 n # 执行一行代码,不进入函数 n N # 执行N行代码 ni# 执行一行汇编指令 ni N # 执行N行汇编指令 s # 执行一行代码,进入函数 s N # 执行N行代码 si# 执行一行汇编指令 si N # 执行N行汇编指令 u # 执行程序,直到退出当前循环 u N # 执行程序,直到第N行
handle signal nostop # 当被调试的程序收到信号时,GDB不会停住程序的运行,但会打出消息告诉你收到这种信号 handle signal stop # 当被调试的程序收到信号时,GDB会停住你的程序 handle signal print # 当被调试的程序收到信号时,GDB会显示出一条信息 handle signal noprint # 当被调试的程序收到信号时,GDB不会告诉你收到信号的信息 handle signal pass/noignore # 当被调试的程序收到信号时,GDB不处理信号 handle signal nopass/ignore # 当被调试的程序收到信号时,GDB不会让被调试程序来处理这个信号 handle signal info signals # 查看有哪些信号在被GDB检测中 handle signal info handle # 查看有哪些信号在被GDB检测中