当前位置: 首页 > news >正文

Linux下gdb常规调试


Linux系统:ubuntu-20.04

gdb简介

gdb 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。一般来说,gdb主要帮助我们完成以下四个方面的功能:

  • 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
  • 在某个指定的地方或条件下暂停程序。
  • 当程序被停住时,可以检查此时你的程序中所发生的事。
  • 在程序执行过程中修改程序中的变量或条件,将一个bug产生的影响修正从而测试其他bug。

  • 1. gdb安装
sudo apt-get install gdb

在这里插入图片描述

  • 2. 编写例程
#include"stdio.h"

void func()
{
	int i=0;
	for(i=0;i<5;i++)
	{
		printf("%d\n",i);
	}
}

int main()
{
	func();
	return 0;
}

在这里插入图片描述
编译运行正常。

  • 3. 进行gdb调试
    接下来进行调试,调试须在gcc test1.c的编译后加个-g表示需对此文件进行gdb调试,然后gdb a.out进入gdb调试模式,如下:

①输入“r”表示run 运行程序
在这里插入图片描述

②输入“l”表示list 查看源程序
由于字符受限,如果一次看不完整则多 l 几次
在这里插入图片描述

③输入“b 14”表示在第14行打断点
④输入“s”表示step 进入到断点
⑤输入“n”表示next 进入到下一条语句
⑥输入“p i”表示printf 打印此时变量 i 的值
在这里插入图片描述

⑥可以在gdb中用shell调用终端命令,例如输入“shell cat test1.c”表示查看文件内容
在这里插入图片描述

⑦输入quit 表示退出gdb调试模式
在这里插入图片描述

⑧输入set logging on 表示开启日志文件功能,会生成一个gdb.txt文件
⑨输入watch i 表示观察点,观察 i 变量
⑩输入info watchpoints 表示擦看观察点情况
在这里插入图片描述

在这里插入图片描述

  • 调试core文件
    如果core文件没有生成,则需要去查看你的ulimit限制,用“ulimit -a”,解除限制用“ulimit -c unlimited”。
    在这里插入图片描述
    解除限制后,再编译生成core文件,查看段错误:gdb 二进制文件 core文件

  • 调试一个正在执行的文件(例如死循环)
    ./a.out &表示再后台运行,执行后会返回一个进程号
    gdb -p pid
    在这里插入图片描述

gdb常用命令汇总

在这里插入图片描述

相关文章:

  • 如何办一份有价值的企业内刊/报纸?向《华为人》学习就够了
  • 06_ElasticSearch:索引和文档的CURD
  • 【力扣2154】将找到的值乘以 2
  • 小皮面板配置Xdebug,调试单个php文件
  • 解决LiveData数据倒灌的新思路
  • 使用datax将数据从InfluxDB抽取到TDengine过程记录
  • Qt QCustomPlot介绍
  • 基于SpringBoot的药房管理系统
  • springboot基于SpringBoot的冬奥会科普平台springboot21
  • 购物H5商城架构运维之路
  • 数据结构--单链表
  • 蓝桥杯 题库 简单 每日十题 day7
  • 计算机网络常见面试题
  • Vue watch实时计算器
  • 增强for循环和一般for循环的对比使用
  • 如何使用IP归属地查询API来追踪网络活动
  • 接口测试之文件上传
  • 防火墙基础
  • 认识一下Git
  • 【C刷题】day3
  • 美国务院宣布新一轮与伊朗相关的制裁
  • 神十九乘组安全顺利出舱
  • 狄威已任国铁集团副总经理
  • 铁路上海站今日预计发送旅客65.8万人次,同比增长超16%
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 神舟十九号载人飞船因东风着陆场气象原因推迟返回