gdb断点(四)删除

断点的删除与断点的设置同样的重要。删除断点的命令有两个:
delete
用法:delete [breakpoints num] [range...]
delete可删除单个断点,也可删除一个断点的集合,这个集合用连续的断点号来描述。
例如:
delete 5
delete 1-10

clear
用法:clear
删除所在行的多有断点。
clear location
clear 删除所选定的环境中所有的断点
clear location location描述具体的断点。
例如:
clear list_insert //删除函数的所有断点
clear list.c:list_delet //删除文件:函数的所有断点
clear 12 //删除行号的所有断点
clear list.c:12 //删除文件:行号的所有断点

clear 删除断点是基于行的,不是把所有的断点都删除。
### 如何在 GDB 中设置和使用断点 #### 设置断点GDB 中可以通过多种方式来设置断点。以下是几种常见的方法: - **按行号设置断点** 可以通过 `break` 或缩写 `b` 来定某一行作为断点位置。例如,如果要在第 10 行设置断点,则可以输入 `(gdb) break 10`[^4]。 - **按函数名设置断点** 如果知道程序中有某个特定的函数名称,可以直接针对该函数入口设置断点。例如,要为名为 `my_function` 的函数设置断点,可输入 `(gdb) break my_function`。 - **设置条件断点** 当希望仅在满足某些条件下才触发断点时,可以定义条件表达式。例如,假设有一个变量 `i`,当其值等于 50 时停止运行,那么可以这样操作:`(gdb) condition 1 i == 50`[^5]。 #### 查看断点信息 为了确认当前已有的断点及其状态,可以使用如下命令: ```bash (gdb) info breakpoints ``` 此命令会显示所有已经设定好的断点列表,包括它们的状态(启用/禁用)、地址、所在文件及具体行数等详细资料[^3]。 #### 控制断点的行为 除了简单的创建外,还可以进一步调整各个断点的工作模式: - **忽略首次触碰** 若不希望立即因新设下的断点而中断执行流程,而是让其跳过前几次命中机会后再生效的话,可以用到 `ignore` 令。比如使编号为 1 的断点忽视最初的十次到达情况,应键入 `(gdb) ignore 1 10`[^1]。 - **临时关闭与重新激活** 对于那些暂时不需要但又不想彻底移除掉的断点来说,“disable” 和 “enable” 是非常实用的一对功能。分别对应着暂停作用以及恢复正常使用这两个动作。 - 关闭断点:`(gdb) disable <number>` - 开启断点:`(gdb) enable <number>` - **清除不再需要的断点** 删除单个或者多个不必要的断点有助于保持工作区整洁高效。有三种主要途径实现这一点: - 根据唯一标识符删除:`(gdb) delete <number>` - 针对接近目标区域内的所有项目一并清理:`(gdb) clear function_name_or_line_number` #### 实际案例演示 假设有这样一个简单 C++ 程序片段用于练习上述知识点: ```cpp #include <iostream> using namespace std; int main(){ int a=0; while(a<10){ cout << "Value of A is "<<a<<endl; ++a; } return 0;} ``` 按照常规步骤启动调试环境之后, ```bash $ gdb ./demo_program ``` 接着尝试添加几个不同类型的断点测试效果吧!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值