gdb调试工具常用命令的使用

简介
一款调试工具

使用
使用gdb调试工具时,在gcc打包为二进制文件时需要指定-g参数表示在该程序中添加调试语句
当编译好后,执行gdb 需要被调试的程序

list / l
列出被调试程序的源代码,根据源码向指定位置设置断点
显示出源代码的下一页使用 list / l

break / b
设置断点:break / b 行号
设置条件断点:b 行号 if 条件当满足条件时才会执行,一般用在循环/递归语句

run / r
运行程序
不用设置断点直接执行,如果遇到程序出现错误时会显示出错的行数,可快速找到错误
该命令还可以在后面添加参数,每个参数以空格分开,它表示向main函数中传入参数

n (next) / S (step)
n/S 表示执行下一条指令
它们的区别在于执行函数的时候,当使用n来执行的时候会直接越过函数不会进入到函数内部执行而是直接执行到下一行,而S则反之
在调试时可以按需选择如何使用这两个命令
gbd调试时有一个小毛病就是在进入到函数内部时如果是库函数就会报找不到那个文件所以在使用时要注意执行遇到库函数时要使用n来执行

p(print)
显示指定变量的值p 变量名

continue
继续执行断点后续指令

quit
退出当前调试

finish
结束当前函数调用,回到调用点

set args
set args args1 args2 ..
在执行程序前设置命令行参数:

info b
查看gdb调试表中调试的内容

ptype
查看变量类型:ptype 变量

bt(backtrace)
列出当前程序正存活着的栈帧
它通常与frame配合使用

frame
根据栈帧编号,切换栈桢
它通常与bt配合使用

display & undisplay
设置跟踪变量display
取消跟踪变量undisplay,需要使用被跟踪变量的编号

知识点
栈帧: 随着函数调用而在stack上开辟的一片内存空间, 用于存放函数调用时产生的局部变量和临时值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原...
    Manfred_Zone阅读 16,656评论 0 26
  • 1、文件和目录: # cd /home 进入 '/home' 目录 # cd .. ...
    XDgbh阅读 6,195评论 0 1
  • gdb git clone git://github.com/cgdb/cgdb.git cd cgdb ./au...
    G风阅读 3,097评论 0 0
  • iOS包含许多“秘密”调试工具,包括环境变量、偏好、GCB的常规调用,等等。本技术说明描述了这些工具。如果你开发i...
    栗子烤肉阅读 8,464评论 1 7
  • 1.gcc编译,首先使用编译选项-g(在编译的时候产生调试信息)。 2.进入gdb的方法: (1)gdb a.ou...
    小饼干_7270阅读 4,239评论 0 1