gdb调试工具

GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具;

GDB主要帮忙你完成下面四个方面的功能:

  • 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
  • 2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
  • 3.当程序被停住时,可以检查此时你的程序中所发生的事。
  • 4.动态的改变你程序的执行环境。

在进行程序调试时,要遵循“分析现象->假设错误原因->产生新的现象去验证假设”的循环。


进行gdb调试的前提是,程序是自己所写,同时在对程序进行编译时,要使用 − g -g g 选项(gcc简介及使用可见:gcc简介和命令行参数说明),例如:gcc -g main.c -o main。若是对main使用gdb进行调试,则在shell中输入gdb main即可。

(所生成的文件较不添加 − g -g g 的,多生成了调试表,可见文件大小比不添加的大。若是未添加且想使用 gdb 进行调试,则可打开后在 gdb 命令行中使用 file 文件名 即可,也可退出重新编译)


gdb工具常见调试指令

  • l i s t list list l i s t    1 list \thickspace 1 list1,列出源码。列出指定行号 l l l 行附近的源代码;
  • b b b b r e a k , e . g .    b 20 break,e.g. \thickspace b 20 breake.g.b20,在20行位置设置断点;
  • r u n / r run / r run/r:运行程序;
  • n / n e x t n/next n/next:下一条指令(会越过函数);
  • s / s t e p s/step s/step:下一条指令(会进入函数);
  • p / p r i n t p/print p/print p    i p \thickspace i pi 查看变量 i i i 的当前值;
  • c o n t i n u e continue continue:继续执行断点后续指令;
  • q u i t quit quit:退出gdb当前调试;

其他指令:

  • r u n run run:使用 r u n run run 查找段错误出现位置;
  • f i n i s h finish finish:结束当前函数调用;
  • s e t   a r g s / r u n   s t r 1   s t r 2   . . . set \space args / run \space str1 \space str2 \space ... set args/run str1 str2 ...:设置main函数命令行参数;
  • i n f o   b info \space b info b:查看断点信息表;
  • b   20   i f   i   =   5 b \space 20 \space if \space i \space = \space 5 b 20 if i = 5设置条件断点(使用条件表达式)
  • p t y p e ptype ptype:查看变量类型;
  • b t bt bt:列出当前程序正存活着的栈帧,常和ptype配合使用;
  • f r a m e   − i frame \space -i frame i:根据栈帧标号,切换栈帧;
  • d i s p l a y display display:设置跟踪变量,并显示跟踪变量的标号;
  • u n d i s p l a y undisplay undisplay:取消设置跟踪变量,使用跟踪变量的标号;

栈帧概念拓展:随着函数调用而在stack上开辟的一片内存空间,用于存放函数调用时产生的局部变量和临时值(栈帧切换时所使用的标号),也即一个函数调用时,函数调用所产生的调用栈


较全指令列表

在这里插入图片描述在这里插入图片描述
更加全面的内容详见:Linux环境下的GDB调试方法

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值