首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux gdb 取消断点

在使用 gdb(GNU 调试器)进行 Linux 程序调试时,有时需要取消之前设置的断点。以下是一些基础概念和相关操作:

基础概念

  1. 断点(Breakpoint):程序执行过程中暂停的地方,允许开发者检查程序状态并进行调试。
  2. gdb:一个强大的调试工具,用于调试程序,支持多种编程语言,尤其是 C 和 C++。

取消断点的方法

你可以使用以下几种方法来取消 gdb 中的断点:

方法一:使用 delete 命令

  • 删除所有断点
  • 删除所有断点
  • 或者简写为:
  • 或者简写为:
  • 删除特定断点: 首先,使用 info breakpoints 查看所有断点的编号:
  • 删除特定断点: 首先,使用 info breakpoints 查看所有断点的编号:
  • 然后,使用 delete 命令加上断点编号来删除特定断点:
  • 然后,使用 delete 命令加上断点编号来删除特定断点:

方法二:使用 clear 命令

  • 清除特定行的断点: 如果你知道断点设置在哪一行代码,可以直接使用 clear 命令:
  • 清除特定行的断点: 如果你知道断点设置在哪一行代码,可以直接使用 clear 命令:

示例

假设你在调试一个简单的 C 程序,并且设置了几个断点:

代码语言:txt
复制
#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    int c = a + b; // 断点1
    printf("Sum is %d\n", c);
    return 0;
}

gdb 中设置断点:

代码语言:txt
复制
(gdb) break main
(gdb) break 10   # 在第10行设置断点

查看当前所有断点:

代码语言:txt
复制
(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400566 in main at test.c:5
2       breakpoint     keep y   0x000000000040058a in main at test.c:10

取消特定断点(例如编号为2的断点):

代码语言:txt
复制
(gdb) delete 2

或者清除第10行的断点:

代码语言:txt
复制
(gdb) clear 10

应用场景

  • 调试过程中调整策略:当你发现某个断点不再需要时,可以及时取消以简化调试流程。
  • 避免不必要的暂停:过多的断点可能导致程序频繁中断,影响调试效率。

可能遇到的问题及解决方法

  • 忘记断点编号:可以使用 info breakpoints 查看所有断点的详细信息。
  • 误删除重要断点:建议在删除前确认断点的作用,或者在删除后重新设置。

通过以上方法,你可以有效地管理和取消 gdb 中的断点,提高调试效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【linux】gdb

    01.gdb使用 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上...break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break ( i b ):查看断点信息。...delete(d) breakpoints:删除所有断点 delete breakpoints n:删除序号为n的断点 disable breakpoints:禁用断点 enable breakpoints...然后挺下来等待命令 print( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数 display 变量名:跟踪查看一个变量,每次停下来都显示它的值 undisplay(编号):取消对先前设置的那些变量的跟踪...(i) locals:查看当前栈帧局部变量的值 quit:退出gdb

    11610

    linux gdb调试

    以前在IDE调试的话,就很容易设置断点,查看参数值,到了 linux 下就变得比较麻烦了。 目前觉得比较重要的就是: 1.设置断点: gdb命令 break,也可以用 b 。...方法 b [函数名|行号],需要注意的是,如果你要设置在类成员函数中设置断点,要加上类名,比如 b TcpClient::onMessage,再接着,如果用 namespace 要加上 namespace...3.一直显示 gdb命令 display,方法 display para。...取消的话 undisplay 编号 4.列出信息 gdb命令 info,info break, info display 5.调试 单步调试 n,进入函数的单步调试 s,跳到下一个断点 c 6.读取文件...gdb命令 file , file path. 7.执行 gdb 命令 run, run args. 8.显示代码 gdb 命令 list,list [行号] 之后可以按 Enter 继续显示

    4.6K32

    初识Linux · 有关gdb

    前言: 当我们Linux学到了这里的时候,我们大概会有一种感觉是,从VS2022转战Linux,写代码对我们来说是一种重新构建读写代码的一个过程,从文本编辑器,到文本编译器,再到今天的调试器gdb,读写代码的每个部分在...Linux这里都是单独拉出来的,所以不免许多人会感受到困难,甚至于某些简单的代码在Linux这里都有点感觉晦涩难懂了,但是呢,难关总会过去的,咱们今天把gdb一看,我们就能再跨越代码的一大关卡 - 调试...2 gdb的使用 首先,我们知道,在vs常用的技巧有,逐语句调试,逐过程调试,打断点,和断点配套的F5调试,监视窗口,跳转到指定行调试等。 那么我们在gdb里面要做的,也就是这些事。...打断点用到的命令是Breakpoint,简称b,对应的操作有b 文件名:函数名/行号,或者直接b 函数名/行号: 那么断点就打好了,在VS里面,断点很显眼的来了个大红点,但是Linux中打了断点我们应该如何查看呢...删除用的是d,但是断点的名字是啥?欸~编号咯。 此时就删除成功了,我们再打断点看看: 欸?不难发现断点的名字是线性增长的,不存在回退的说法。 这是linux中断点的一个特性。

    7410

    【Linux】调试工具gdb的使用

    ,但是还没有学习如何在Linux下对代码进行调试,通过本章的学习,将学会如何使用gdb对代码进行调试。...gdb 可执行程序:进入调试 q/quit/ctrl d:退出调试 代码的查看(l) 我们在这种无图形化界面的Linux下调试时,如何看到我们的代码呢?...b(break) 函数名 :在该函数处设置断点 查看断点信息(info) 输入info b指令可以查看所有的断点详细信息 这里需要注意,断点的编号是逐渐累加的,也就是说,假如我们将该断点取消...那么问题来了,如何取消断点呢? 也很简单,d 断点编号 即可取消该断点 逐过程与逐语句调试(n\s) 所谓逐过程调试,就是对应着vs里的f10,即遇到函数不会进入。...,同样我们在Linux下也可以查看堆栈调用情况,输入指令bt即可 VS里main函数函数栈帧的创建 Linux下使用gdb调试bt命令观察所调用堆栈 跳转指定行(until) 在vs中,我们在调试时要想跳转至指定行号的地方

    3.4K30

    Linux gdb使用基础

    GDB简介 GDB(GNU Debugger)是Linux下一款C/C++程序调试工具,通过在命令行中执行相应的命令实现程序的调试,使用GDB时只需要在shell中输入gdb命令或gdb filename...locals 查看当前栈帧的局部变量 backtrace bt 查看函数调用栈帧编号 frame f 选择栈帧(再看局部变量) display - 每次自动显示跟踪的变量的值 undisplay - 取消跟踪...This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details....这次对程序设置断点进行调试,进入GDB环境后,可以先使用list命令查看源程序,确定所需加断点和行号: (gdb) list 1 #include 2 3 int...参考: 《精通Linux C编程》- 程国钢 《Linux C编程完全解密》- 闫敬 吴淑坤

    2.4K10

    Linux调试器——gdb

    gdb 什么是gdb debug与release gdb的基本操作 查看代码与断点 执行与调试 监视变量 什么是gdb 之前用的一直都是VS编译器进行调试,调试是一个非常重要的过程,在Linux中调试需要用到一个工具就是...在调试思路上VS编译器和gdb是一样的,但是调试过程的差距就很大了。 我们都知道Linux的操作都是通过命令完成的,调试也是一样的,靠的就是命令调试。...Linux环境下,gcc/g++编译出来的可执行程序默认是release模式 先来写一个程序验证一下 进入调试模式 gdb 你要调试的文件 后面的on debugging symbols...在VS编译器中,我们按F9是可以进行打断点的,再按一次可以取消: Linux进行打断点是:b 你要断点的行数 现在13行有一个断点,查看断点是info b: 断点也有自己的行,就是前面...执行与调试 在VS编译器中,F5是执行并且调试,Ctrl+F5是执行不调试,Shift+F5是取消调试。 在一段代码有多个断点的时候,按F5会停在一个断点上,在按一次会跑到下一个断点。

    3.8K00

    linux工具---gdb调试~~进程

    1.gdb的简单介绍 1.1程序发布版本 程序的发布一般都是两个版本,debug模式和release模式,在linux里面的gcc/g++编译出来的这个结果默认就是release模式,要想使用这个gdb...进行调试,这个时候就必须在表一的时候加上-g选项,在debug的模式下面进行; 1.2前期准备 我们时候要进行安装gdb和环境的搭建,这个gdb好像是默认就有的,我们可以使用这个gdb --version...这个运行起来之后就回到有断点的位置暂停程序; 1.4.4查看变量的数值 print x这个x就是我们自己定义的变量,查看对应的定义变量的数值; 1.4.5断点之间跳转 使用continue指令可以有第一个断点直接跳转到第二个断点...里面的PCB tast_struct就是linux里面的PCB,是linux里面的一种数据类型; task_struct里面包含的属性有:标识符,状态,优先级,程序计数器,上下文数据,I/O状态记录,内存指针等所有的属性...; linux里面使用双向链表组织进程 2.4查看进程 查看进程的指令就是ls /proc,这个proc实际上就是一个linux下面的目录; 当前目录概念:我们创建一个文件,我们没有去指定这个文件的位置

    10610

    【Linux】Linux调试器--gdb的使用

    ---- ---- 一、gdb的介绍 1. gdb是linux上面的调试器,是非图形化界面纯命令行调试的,用起来非常的麻烦! 2....值得注意的是:每一个二进制程序不仅仅只是一堆二进制代码,他们内部都是有特定格式的,Linux中形成的可执行程序是elf格式。...的使用 1.显示代码: l+行号(list)指令 gdb会默认记住历史上曾经输入的指令,l+0输入后gdb会从第零行开始显示部分的代码,我们继续回车便可以显示后半部分的代码,直到显示完停止 2.设置断点...: b+行号(breakpoint) 3.查看断点: info b 4.取消断点: d + 断点编号 5.调试运行:r(run) vs2022环境: 1.运行调试:fn+f5如果有断点,就停下来...,如果没有断点就直接运行起来,如果想要跳到下一个断点,可以继续按fn+f5 2.取消调试:fn+shitf+f5 3.直接运行:fn+crtl+f5直接运行,有断点也不会调试 linux环境 1.

    3.6K30

    Linux GDB jump 命令介绍

    jump 命令可以简写成 j,但是不可以简写成 jmp,其使用有一个注意事项,即如果 jump 跳转到的位置后续没有断点,那么 GDB 会执行完跳转处的代码会继续执行。...6,那么程序会跳过代码 B 和 C 的执行,执行完代码 D( 跳转点),程序并不会停在代码 6 处,而是继续执行后续代码,因此如果我们想查看执行跳转处的代码后的结果,需要在行号 6、7 或 8 处设置断点...,当触发行号 4 处的断点后,正常情况下程序执行流会走 else 分支,我们可以使用 jump 7 强行让程序执行 if 分支,接着 GDB 会因触发行号 14 处的断点而停下来,此时我们接着执行 jump...initServer” 、“b 2025”、“b 2027”在这个函数入口处、2025 行、2027 行增加三个断点,然后使用 run 命令重新运行一下程序,触发第一个断点后,继续输入 c 命令继续运行...,然后触发 2025 行处的断点,接着输入 jmp 2027 : (gdb) b 2025 Breakpoint 5 at 0x42c8e7: file server.c, line 2025.

    6.9K10

    Linux中的gdb调试

    4、使用gdb调试的命令 gdb (需要调试的文件):gdb使用方法 //在gdb情况之下的命令 list:查看源文件(可简写为 l ) l n:l是list的缩写,n代表的是查看第几行 l (文件名)...那么在Linux中的gdb下,我们应该怎么运行呢? 首先确保的是,程序得先运行起来。所以在gdb下 r/run:运行程序 可是直接运行的话就直接结束了,所以还要再run之前先打一个断点。...在有图形化界面的时候能够看到头部的时候会有红点,那Linux下怎么看的出来断点在哪里呢? info b/i b:查询断点细节 那断点怎么取消呢?...当然了,能够查看变量的值,也能够查看变量的地址 p &(变量的名称) 还是不够,我们再vs里面查询数值之后就能够直接显示再下面,我们能不能再Linux的gdb也常显示再下方,不要一次一次的重新输入语句来查看变量值呢...和原来的断点好像是很像啊,那到底有什么作用呢?下面就来介绍。 怎么取消常显示呢?

    15010

    自己动手写一个GDB|设置断点(原理篇)

    在上一篇文章《自己动手写一个GDB|基础功能》中,我们介绍了怎么使用 ptrace() 系统调用来实现一个简单进程追踪程序,本文主要介绍怎么实现断点设置功能。...什么是断点 当使用 GDB 调试程序时,如果想在程序执行到某个位置(某一行代码)时停止运行,我们可以通过在此处位置设置一个 断点 来实现。 当程序执行到断点的位置时,会停止运行。...如下图所示: 断点原理 要说明 断点 的原理,我们首先需要了解下什么是 中断。本公众号以前也写过很多关于 中断 的文章,例如:《一文看懂|Linux中断处理》。...这时调试进程(GDB)就可以对进程进行调试,如:打印变量的值、打印堆栈信息等。 设置断点 从上面的介绍可知,设置断点的目的是让进程停止运行,从而调试进程(GDB)就可以对其进行调试。...第四步:让被调试的进程继续运行,直到执行到 int3 指令(也就是断点)。此时,被调试进程会停止运行,调试进程(GDB)就可以对进程进行调试。

    2.4K20

    【Linux】Linux调试器-gdb使用

    背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g选项...初次使用时,需要先安装: sudo yum install -y gdb 使用 注意使用gdb时,调试的是debug模式。...(可简写为 i b) display 变量名:跟踪查看一个变量,每次停下来都显示它的值 undisplay:取消对先前设置的那些变量的跟踪 until X行号:跳至X行(中间的代码都是运行了的) breaktrace...(或bt):查看各级函数调用及参数 info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb 我们打断点后,如果要删,需要 d 断点的序号。...如果想取消常显示,用undisplay,注意后面接的是编号。 如果我们想从一个断点直接到另一个断点,可以用continue (c)。

    27800
    领券