首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Linux】GDB调试

【Linux】GDB调试

作者头像
半生瓜的blog
发布2023-05-13 14:10:00
发布2023-05-13 14:10:00
5.6K0
举报
文章被收录于专栏:半生瓜のblog半生瓜のblog

GDB调试

GDB是GUN发布的一个强大的程序调试工具,也是Linux程序员不可或缺的一大利器。

安装GDB

注意安装你所需要的版本。

  1. wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.1.tar.gz
  2. tar -zxvf gdb-8.1.1.tar.gz
  3. cd gdb-8.1.1
  4. ./configure
  5. make
  6. make install

启动GDB

使用GDB的前提。

代码语言:javascript
复制
gcc -g hello.c -o hello

启动GDB调试。

代码语言:javascript
复制
gdb hello

GDB和Shell一样支持命令补全。。


获取帮助命令

GDB将命令分为12个大类,使用命令 “help 子类别”,可以查看每个类下面的详细帮助。

代码语言:javascript
复制
help breakpoints

设置断点

  • break

break命令用于设置断点,命令行接受行号或者函数名作为参数。

**例1:**设置以函数test()为断点,执行到调用这个函数的时候程序暂停。

代码语言:javascript
复制
break test()

**例2:**设置第二行为断点

代码语言:javascript
复制
break 2

查看断点

  • info
代码语言:javascript
复制
info break

删除断点

  • delete

delete + 断点编号

代码语言:javascript
复制
delete 2
  • clear

clear 删除指定位置的所有断点

**例:**删除函数test附近的所有断点

代码语言:javascript
复制
clear test

运行程序和单步执行

  • run

设置完断点后 执行 run 命令,运行程序。

代码语言:javascript
复制
run

程序中断后,等待用户发出下一步命令的操作。


  • next命令

next命令单步执行程序,缩写为n。也可指定执行行数。

例1

代码语言:javascript
复制
n

例2:

代码语言:javascript
复制
n 3
  • continue

continue命令继续执行,直到遇到下一个断点。缩写为c。

代码语言:javascript
复制
c
  • step

或者继续使用单步执行next,再或是使用step,缩写s。 next与step的最大区别是,step遇到函数是会进入到函数内部的,而next不会(而是当做一条语句)。 next逐过程,step逐语句。

代码语言:javascript
复制
s

监视变量

  • print

调试程序最基本的需求就是监视变量的值,可以使用print命令,缩写为p,显示指定变量的值。

代码语言:javascript
复制
print count
  • watch

为了更方便的监视某一变量,使用watch,来时刻监视某一变量或表达式,只要它发生了变化,就会停下来。并给出提示。

代码语言:javascript
复制
watch  count

临时修改变量

  • set var

某些情况我们需要让程序进入一些特殊的流程,例如进入了一个循环,我们可以修改控制循环变量的值,来跳转到指定的循环次数。 gdb允许用户在程序运行时改变变量的值,通过set var命令来实现。

代码语言:javascript
复制
set var count = 4

查看堆栈情况

  • bt

每次调用一个函数,函数的地址、参数、以及内部变量都会被压入栈中,运行时的堆栈信息对于程序员非常重要,使用"bt"命令可以看到当前运行时栈的情况。

代码语言:javascript
复制
bt

退出GDB

  • quit

调试完毕后,使用quit命令,缩写为q,退出gdb程序。

代码语言:javascript
复制
q
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GDB调试
    • 安装GDB
    • 启动GDB
    • 获取帮助命令
    • 设置断点
    • 查看断点
    • 删除断点
    • 运行程序和单步执行
    • 监视变量
    • 临时修改变量
    • 查看堆栈情况
    • 退出GDB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档