首页 > 系统相关 >Linux调试器-gdb的使用

Linux调试器-gdb的使用

时间:2024-08-10 21:25:56浏览次数:8  
标签:函数 int gdb Linux 断点 调试 调试器

文章目录

Linux调试器-gdb的使用

背景

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++ 出来的二进制文件,默认是release模式
  • 要想使用gdb调试,必须在将源程序生成二进制程序的时候加上-g

使用

  • q,ctrl+d:退出调试
  • list/ l 行号:显示binFile源代码,调试模式下具有指令记忆功能,紧接着回车会接着上次的位置往下列,每次列10行
  • l/list 函数名:列出某个函数的源代码
  • r或run: 运行程序
  • b 行号:在某一行设置断点
  • b 函数名:在某个函数开头设置断点
  • info b :查看断点信息
  • d 断点编号:删除断点
  • n或next :逐过程
  • s或step :逐语句
  • p 变量名:查看变量的值
  • p &变量名: 查看地址
  • display 变量名:跟踪查看变量,每步都会显示变量的值
  • undisplay 编号:取消常显示
  • until 行号:跳转到(行号)行
  • finish:当进入函数体后,finish会直接结束函数,显示返回值
  • c:实现断点之间的跳转
  • disable 编号(断点):禁用断点
  • enable 编号(断点):启用断点

调试演示代码mycode.c

#include<stdio.h>

int addToTop(int top)
{
	int res = 0;
	int i = 1;
	for(;i <= top; ++i)
	{
		res += i;
	}

	return res;
}

int main()
{
	printf("debug begin\n");

	int top = 100;
	int sum = addToTop(top);

	printf("sum: %d\n",sum);

	return 0;
}
  1. 如图第二行所示,加上 -g,我们才能在二进制程序中找到debug文件,才能进行gdb调试
    在这里插入图片描述

  2. 显示如下图所示,证明我们成功进入调试模式
    在这里插入图片描述

  3. 调试模式下不会显示代码,我们可以使用 list/l 调试命令来显示binFile源代码。 请添加图片描述

  4. b和info b:打断点和查看断点信息请添加图片描述
    请添加图片描述

  5. s:逐语句(会进入函数内)请添加图片描述

  6. p:查看变量值(临时)请添加图片描述

  7. display:常显示变量值
    请添加图片描述

  8. undisplay: 取消常显undisplay

  9. until: 跳转到指定行数
    请添加图片描述

  10. finish :结束函数,会带返回值

请添加图片描述

以上您就掌握简单gdb使用于调试了

标签:函数,int,gdb,Linux,断点,调试,调试器
From: https://blog.csdn.net/2401_86681860/article/details/141094169

相关文章

  • 提高效率:Linux 正则表达式实用技巧
    目录前言匹配符号用法讲解“.”用法[]用法“*”用法“.*”用法“\?”用法“\+”用法“\\{n\\}”用法\\{m,n\\}用法锚点符号“^”用法“$”用法“^$”用法或|用法前言在Linux系统中,正则表达式(RegularExpressions,简称regex)是一个强大的工具,广泛应......
  • 一文带你快速掌握Linux常用命令(图文并茂+超详细!)
    作者简介:......
  • 【Linux必备工具】自动化构建工具makefile的使用详解
    ✨                        听风八百遍,才知是人间    ......
  • 【书生大模型实战营(暑假场)闯关材料】入门岛:第1关 Linux 基础知识
    【书生大模型实战营(暑假场)闯关材料】入门岛:第1关Linux基础知识1.使用VScode进行SSH远程连接服务器2.端口映射及实例参考文献这一博客主要介绍使用VScode进行服务器远程连接及端口映射。1.使用VScode进行SSH远程连接服务器安装VScode,添加extensionRemote-SSH。......
  • linux系统网络编程
     网络核心概念网络:通过有线或无线的链路连接多个计算机设备进行数据通信或设备控制介质:双绞线,同轴电缆,光纤无线:WIFL,移动网络,蓝牙,红外,NFC设备:计算机,交换机,路由器,IOT在网络编程中,应用层协议编程是非常关键的一部分,因为它直接涉及到了如何在不同的应用程序之间交换数据......
  • linux系统磁盘管理
    linux系统磁盘管理硬盘命名在设备名称的定义规则如下,其他的分区可以以此类推系统的第⼀块SCSI接⼝的硬盘名称为/dev/sda系统的第⼆块SCSI接⼝的硬盘名称为/dev/sdb系统中分区由数字编号表示,1~4留给主分区使⽤和扩展分区,逻辑分区从5开始有些存放数据的设备并不是直接......
  • Linux内核解读(1)--内存管理与malloc原理
        本文主要关注Linux环境的堆内存的管理,详细解析Glibc与TCMalloc的malloc原理, 由于本人能力有限,难免会出现解读错误的地方,望各位大佬批评指正,后面也会在进一步解读中对本文进行修改。1、Linux内存分布        下图的布局形式是在内核2.6.7以后才引入的,......
  • Linux问题调试(4)--内存问题与tcmalloc
    1、问题概述      之前的文章介绍过Asan来定位内存泄漏问题,虽然已经被集成到各大编译器中,‌但它的使用可能受到特定环境或配置的限制。‌例如,‌在某些复杂的系统或应用程序中,‌ASan可能会因为与程序的交互复杂性而遇到挑战,‌导致难以准确诊断问题。‌Linux问题调试(2)--......
  • 使用Linux实现FTP云盘项目2
    实现功能:ls———查看服务端文件lls———查看客户端自己的文件cd———切换服务端目录lcd———切换客户端自己的目录切换成功put———上传文件get———下载文件服务器端:客户端:源码:#include<sys/types.h>/*SeeNOTE......
  • 详解linux后台、前台运行进程
    程序运行可以有2种前台运行程序运行在当前的终端,所有的信息都输出到屏幕上,占用你的终端,你也无法继续使用如果终端异常关闭,导致程序会自动退出后台运行不会占用你的终端,程序在系统后台跑着,你该干啥干啥,终端关了,程序也继续运行。后台运行命令命令集合command&#未启动......