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

让gdb保存断点列表?

在编程中,使用调试器(如GDB)时,保存断点列表可以帮助开发人员在程序中跟踪和识别关键点。要在GDB中保存断点列表,请按照以下步骤操作:

  1. 启动GDB并加载要调试的程序。在命令行中输入以下命令:
代码语言:txt
复制
gdb <程序名称>
  1. 在GDB中设置断点。使用break命令指定函数名称或行号:
代码语言:txt
复制
break <函数名称或行号>

例如:

代码语言:txt
复制
break main

代码语言:txt
复制
break 10
  1. 保存断点列表。使用save breakpoints命令将断点列表保存到文件中:
代码语言:txt
复制
save breakpoints <文件名>

例如:

代码语言:txt
复制
save breakpoints my_breakpoints.txt

这将在当前目录中创建一个名为my_breakpoints.txt的文件,其中包含保存的断点列表。

  1. 退出GDB。使用quit命令退出:
代码语言:txt
复制
quit

要在以后的调试会话中使用这些断点,请按照以下步骤操作:

  1. 启动GDB并加载要调试的程序。在命令行中输入以下命令:
代码语言:txt
复制
gdb <程序名称>
  1. 加载断点列表。使用source命令指定保存断点列表的文件:
代码语言:txt
复制
source <文件名>

例如:

代码语言:txt
复制
source my_breakpoints.txt

这将加载保存的断点列表,并在GDB中恢复它们。

通过这种方式,您可以在GDB中保存和加载断点列表,以便在多个调试会话中跟踪和识别程序中的关键点。

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

相关·内容

GDB调试指南-断点设置

为何要设置断点 在介绍之前,我们首先需要了解,为什么需要设置断点。...printNum(10); 31 div(10,0); 32 return 0; 33} 编译: gcc -g -o test test.c 注意,编译时需要带上-g参数,具体原因参见《gdb...这个时候我们可以借助gdb来设置条件断点,例如: break test.c:23 if b==0 当在b等于0时,程序将会在第23行断住。...#对test.c中的所有函数设置断点 rbreak test.c:^print #对以print开头的函数设置断点 设置临时断点 假设某处的断点只想生效一次,那么可以设置临时断点,这样断点后面就不复存在了...例如: watch a 这个时候,程序继续运行,如果a的值发生变化,则会打印相关内容,如: Hardware watchpoint 2: a Old value = 12 New value = 11

1.9K20
  • gdb调试容器和命令保存

    gdb 内置了 Python 支持,因此可以轻松编写一个函数来打印出任何 stl 结构的内容。gcc 4.5 已经提供所需的 python 脚本,以使 gdb 智能地处理 stl 数据结构。...在gdb调试的时候,使用source ~/.gdbinit加载这些宏操作。 如果你的gdb在运行当中,需要重启启用下,这些宏才生效。 阅读这些代码宏,也可以帮助你理解stl结构。...调试历史保存 还有一个比较有用的是保存gdb调试历史,set history save on 一个相关的命令是set history remove-duplicates ....该命令是“控制删除命令历史列表中重复的历史条目。如果计数不为零,gdb 将回顾最后计数的历史条目并删除与当前条目重复的第一个条目。添加到命令历史列表中。如果计数是无限制的,那么此后视是无界的。...set history remove-duplicates 默认情况下,gdb 将历史记录保存到当前目录的./.gdb_history 文件中。

    1.8K400

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

    在上一篇文章《自己动手写一个GDB|基础功能》中,我们介绍了怎么使用 ptrace() 系统调用来实现一个简单进程追踪程序,本文主要介绍怎么实现断点设置功能。...什么是断点 当使用 GDB 调试程序时,如果想在程序执行到某个位置(某一行代码)时停止运行,我们可以通过在此处位置设置一个 断点 来实现。 当程序执行到断点的位置时,会停止运行。...这时调试进程(GDB)就可以对进程进行调试,如:打印变量的值、打印堆栈信息等。 设置断点 从上面的介绍可知,设置断点的目的是进程停止运行,从而调试进程(GDB)就可以对其进行调试。...第四步:被调试的进程继续运行,直到执行到 int3 指令(也就是断点)。此时,被调试进程会停止运行,调试进程(GDB)就可以对进程进行调试。...第五步:调试完毕后,恢复断点处原来的指令,并且 IP 寄存器回退一个字节(因为断点处原来的代码还没执行)。

    2.2K20

    Linux调试器——gdb

    gdb 什么是gdb debug与release gdb的基本操作 查看代码与断点 执行与调试 监视变量 什么是gdb 之前用的一直都是VS编译器进行调试,调试是一个非常重要的过程,在Linux中调试需要用到一个工具就是...release模式是给客户用的,因为客户的需求是如何使用这个软件,好不好用,而不是运行到某个阶段弹出来个报错或者是异常客户自己调试。 相比较release模式下会优化代码,比如体积方面。...退出gdb模式按q+回车。 想可执行程序编程debug模式就要加一个g选项。 然后比较一下dubug与release版本文件的大小 确实debug比release的大。...gdb的基本操作 查看代码与断点 以下指令都是在gdb环境下进行操作。 进入gdb模式发现连个代码都不知道在哪里,这怎么调试呢?...Num那一列,想删除断点可以用d 断点列表的行数: 注意不是代码中的行数,是info b中的行数!

    3.7K00

    GDB调试-从入门实践到原理

    查看断点列表 break [+-]offset 在当前位置偏移量为[+-]offset处设置断点 break *addr 在地址addr处设置断点 break ... if expr 设置条件断点,仅仅在条件满足时...enable n 启用指定编号的断点 disable n 禁用指定编号的断点 save breakpoints file 保存断点信息到指定文件 source file 导入文件中保存断点信息 break...设置读写断点,仅支持硬件实现 info watchpoints 查看数据断点列表 set can-use-hw-watchpoints 0 强制基于软件方式实现 使用数据断点时,需要注意: 当监控变量为局部变量时...设置原理 在程序中设置断点,就是先在该位置保存原指令,然后在该位置写入int 3。当执行到int 3时,发生软中断,内核会向子进程发送SIGTRAP信号。当然,这个信号会转发给父进程。...然后用保存的指令替换int 3并等待操作恢复。 命中判断 gdb将所有断点位置存储在一个链表中。命中判定将被调试程序的当前停止位置与链表中的断点位置进行比较,以查看断点产生的信号。

    2.8K30

    Linux GDB常用命令一栏

    如果想要详细了解gdb某个命令的使用方法,可以用help 命令 Example:(gdb)help list   (gdb)help all 4.设置和管理断点 (1)以行号设置断点:(gdb)break...Num列表断点的编号,Type指明类型,类型位breakpoints说明是中断。...Disp指示中断点在生效一次后是否就失去作用,如果是则为dis,不时则为keep。     Bnb表明当前中断点是否有效,如果是y,不是则为n。Address列表中断所处的内存地址。...6.删除断点 disable只是某个断点暂时失效,断点依然存在与程序中。如果要彻底的删除某个断点,可以使用clear或者delete命令。...比如可以针对远程调试进行设置,可以用来设置gdb一行的字符数等。 8.控制程序的执行 (1)continue命令:程序继续运行,直到下一个断点或者运行完为止。

    1.6K40

    GDB调试

    这些section里保存了调试信息,目前ELF文件采用DWARF 3(Debug With Arbitrary Record Format)标准的调试信息格式。 使用GDB你可以: 1....程序停止在你指定的位置:设置断点 3. 在停止点查看当前程序的状态:变量、寄存器的值 4....是断点序号,是可选参数,不提供则显示所有断点 删除断点:delete(d) delete [break_num_list] [range]:break_num_list是可选参数,可以是一个断点序号的列表...禁用断点:disable(dis) 有的时候你想临时断点不起作用,又不想删除断点,否则过一会还要再设置这个断点,这时候可以暂时禁用断点。...如下示例 commands 1 slient printf “i is %d\n”, i end 在触发断点1时打印变量i的值,slient是GDB安静的触发断点,不要打印一些没用的信息。

    2.2K10

    GDB调试学习

    简介 GDB是GCC的调试工具。其功能如下: 启动程序,使程序按自定义形式运行; 使程序停止指定断点位置; 程序停止后,检查程序执行中的相应情况; 动态改变程序执行环境。...如果之前没有设过断点,则执行完整个程序;如果设过断点,则程序停在第一个断点处。 c:继续执行被调试程序,直到到下一个断点,或程序整体结束。...q:退出gdb调试环境。 help [命令名称]:gdb帮助命令,提供对GDB各种命令的解释说明。...如set val = 2即为把2保存到val变量中;设置输入参数使用set args a b c(a,b,c分别为对应输入参数)。 watch:监视一个变量的值,不管它何时被改变。...disable:禁止断点功能,这个命令需要禁止的断点断点列表索引值作为参数。 bt:显示程序堆栈信息。 l:l相当于list,从第一行开始列出源码。

    1.4K20

    int 3中断与软件调试

    2.在调试器中设置断点      考虑一下调试器是如何设置断点的。当我们在调试器中对代码的某一行设置断点时,调试器会先把这里的本来指令的第一个字节保存起来,然后写入一条INT 3指令。...因为INT 3指令的机器码为11001100b(0xCC),仅有一个字节,所以设置和取消断点时也只需要保存和恢复一个字节,这是设计这条指令时须考虑好的。    ...在跳转到处理例程之前,CPU会保存当前的执行上下文,包括段寄存器、程序指针寄存器等内容。          ...因此,在用户发出了恢复执行命令后,调试器在通知系统真正恢复程序执行前,调试器需要将断点列表中的所有断点再落实一遍。...属于代码类断点,即可以CPU执行到代码段内的某个地址时停下来,不适用于数据段和I/O空间。

    2.4K20

    深入浅出GDB调试器

    所谓调试(Debug),就是单步执行代码,或通过断点程序执行到某个位置,以此来逐步锁定程序出现问题的范围。...(9)b(break)设置断点以及打断点的六种方式 断点(BreakPoint),可以程序执行到断点处并停在这里,加断点应该是调试的时候最常用的一种方法,就像VS中的 F9 键。...这名字是啥呀 core.9546,怪怪的,我们希望他有一个符合我们心意的名字,这也可以实现,我们可以修改 core 的配置文件 /proc/sys/kernel/core_pattern ,那你改吧,你发现改完保存不了...因为这个文件是不能写入的,我们可以借助重定向来修改这个文件 echo "core-%e-%t" > /proc/sys/kernel/core_pattern 关于里面的参数,列表如下 参数 含义...num n 线程 num 继续执行,num 是线程的编号,用info查看 (gdb)set scheduler-locking on 只执行当前线程,输入 n 继续执行 (gdb)set scheduler-locking

    13510

    gdb 调试笔记

    |'all'] tcatch event 捕捉一次catch (6)dprinf 遇到断点是打印信息 set dprintf‐style gdb/call/agent 设置用哪里的打印函数打印信息 set...(9)管理断点 info/disable/delete break 保存断点到文件中 save breakpoints [filename] 保存现在的断点到文件中 source [filename]...恢复断点,将文件中的断点打一遍, watchpoints可能会失效 四、保存现场和回溯 (1)gdb 的快照保存 checkpoint: 生成当前状态的快照 info checkpoint:显示快照信息...gdbinit文件,不想使用插件时不必去注释gdbinit文件了 gdb ‐q :不打印版本和介绍信息启动 gdb ‐write:对二进制程序可读可写启动,可对二进制程序指令进行修改,并保存到文件中,或者启动后...command (3)转储分析 gdb ‐‐core= gdb program core gcore [file] 生成一个core文件用于保存当前gdb调试的快照(默认生成core.pid

    89300

    使用GDB调试Linux内核

    GDB可以让你在被调试程序执行时看到它的”内部“情况,观察程序在特定断点上的状态,并逐行运行代码。 GDB还提供了“远程”模式,使用GDB协议通过网络或串行设备与被调试程序进行通信。...我们也可以使用QEMU/KVM虚拟机作为目标机器,待调试的内核运行在虚拟机中,然后在宿主机上运行gdb,连接到虚拟机中的KGDB。...将XML文件保存为domain.xml,然后在libvirt定义虚拟机: $ virsh define domain.xml 接着我们可以使用virsh list --all查看虚拟机列表: $ virsh...如果你在内核配置中启用了KASLR(CONFIG_RANDOMIZE_BASE=y),则无法从gdb设置断点。...这时在虚拟机里执行任意命令,例如ls,断点将被触发: (gdb) c Continuing.

    1.2K10

    二进制学习

    类型 修改返回地址,其指向溢出数据中的一段指令(shellcode) 修改返回地址,其指向内存中已有的某个函数(return2libc) 修改返回地址,其指向内存中已有的一段指令(ROP) 修改某个被调用函数的地址...,其指向另一个函数(hijack GOT) Format Strings 函数 基本介绍 printf 输出到 stdout fprintf 输出到指定 FILE 流 vprintf 根据参数列表格式化输出到...gdb 还有其他一些小技巧,可以参考awesome-cheatsheets/tools/gdb.txt中的列表。...该列表最初由韦神创建,我时不时也会添加一些上去。...:main 删除文件名和函数名的断点 clear *0x00400448 删除内存地址的断点 disable 2 禁用某断点,但是部删除 enable 2 允许某个之前被禁用的断点它生效 rbreak

    1K20

    gdb基础命令和常用操作补充

    作用如下: 程序按照自己定义的要求运行,不必每次改变程序 程序在设置的断点处停住,并且检查程序的执行情况 动态改变程序的执行环境 一、启动调试 gdb <program...删除断点可以使用 clear和d(delete的简写) clear删除断点, 使用方法和b命令类似 d  [breakpoints]    breakpoints 为设置的断点的标号 10. ...[New Thread 0xb7e78b70 (LWP 2933)] info threads # 查看所有线程列表 where # 显示当前线程调用堆栈 thread num # 切换线程 [Switching...$ gdb --tui hello set scheduler-locking off|on|step 在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只被调试程序执行呢...step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

    2.9K00
    领券