GDB 简明教程

本文是一份GDB调试工具的实战教程,涵盖了GDB的基本介绍、常用命令,如进入退出、查看源码、设置断点、单步调试和函数栈。通过实例演示如何调试C程序,如bugging.c和链表程序,帮助开发者提升调试技能。
摘要由CSDN通过智能技术生成

本课程适合有 C 语言基础,想做练手项目的同学,可以有效的学习 GDB 的进入和退出,设置断点,单步调试以及函数栈等调试功能,做一些有趣的事情。

wget http://labfile.oss.aliyuncs.com/courses/496/gdbtest.zip
unzip gdbtest.zip

请确认文件保存在目录:“/home/shiyanlou/gdbtest/” 下。

这两个程序分别为:

  • debugging.c 程序:只有一个源文件,这是一个简单的求和程序,计算 1+2+3+…+100 的值。程序存在bug,导致预期结果并不为 5050,我们将在本节实验中调试并修复 BUG。
  • 链表程序:本例的程序来源于 github,程序定义了数据结构链表,并使用了三个测试函数进行测试,程序仍然有 BUG,需要我们使用 GDB 去发现。

1、GDB 常用命令实战

1 GDB 的基本介绍

GDB 基础知识:

GDB, 是 The GNU Project Debugger 的缩写, 是 Linux 下功能全面的调试工具。GDB 支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。在 Linux 环境软件开发中,GDB 是主要的调试工具,用来调试 C 和 C++ 程序。

在终端输入以下命令安装 GDB:

sudo apt-get install gdb
GDB 的进入和退出
  • 如果要调试程序,需要在 gcc 编译可执行程序时加上 -g 参数,首先我们编译 bugging.c 程序,生成可执行文件:
gcc bugging.c -o bugging -g -m32

其中 -o 指定输出文件名, 实验楼的环境是 64 位的操作系统,所以默认会编译为 64 位的程序,添加 -m32 选项可以编译为 32 位。

  • 如果在你的环境里编译报错,请安装 libc6-dev-i386 后再次编译:
sudo apt-get install libc6-dev-i386
  • 输入 gdb bugging 进入 gdb 调试 bugging 程序的界面:
gdb bugging
  • 在 gdb 命令行界面,输入run 执行待调试程序:
(gdb) run
  • 在 gdb 命令行界面,输入quit 退出 gdb:
(gdb) quit
GDB 命令行界面使用技巧

命令补全:

任何时候都可以使用 TAB 进行补全,如果只有一个待选选项则直接补全;否则会列出可选选项,继续键入命令,同时结合 TAB 即可快速输入命令。

部分 gdb 常用命令一览表:

<
命令 简写形式 说明
list l 查看源码
backtrace bt、where 打印函数栈信息
next n 执行下一行
step s 一次执行一行,遇到函数会进入
finish 运行到函数结束
continue c 继续运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值