GDB 详细介绍

欢迎关注公众号【自动驾驶事务所】,分享更多以C/C++为计算机语言,以自动驾驶为方向的文章

5.1.1设置断点
使用break命令(缩写 b)设置断点。调试器便利变量’$ bpnum’记录您最近设置的断点数; 有关便利变量的讨论,请参阅便利变量。

break location
在给定位置设置断点,可以指定函数名称,行号或指令的地址。(有关指定位置的所有可能方法的列表,请参阅“ 指定位置”。)断点将在执行指定位置中的任何代码之前停止程序。

当使用允许重载符号的源语言(例如C ++)时,函数名称可能引用多个可能的中断位置。有关该情况的讨论,请参阅模糊表达式。

只有当特定线程(请参阅特定于线程的断点)或特定任务(请参阅Ada任务)命中该断点时,才可以插入一个断点来停止程序。

break
在没有任何参数的情况下调用时,break在要在所选堆栈帧中执行的下一条指令处设置断点(请参阅检查堆栈)。在任何选定的帧中,但在最里面,这使得程序在控制返回到该帧时立即停止。这类似于finish所选帧内帧中命令的效果 - 除了finish不会留下活动断点。如果你break在最里面的框架中没有参数使用 ,GDB会在下次到达当前位置时停止; 这在循环内部可能很有用。

GDB通常在恢复执行时忽略断点,直到至少执行了一条指令。如果它没有这样做,你将无法在没有首先禁用断点的情况下继续通过断点。无论在程序停止时断点是否已存在,此规则都适用。

break … if cond
设置条件为cond的断点; 每次到达断点时计算表达式 cond,并且仅当值为非零时停止 - 即,如果cond计算为true。“…'代表上面描述的一个可能的参数(或没有参数)指定中断的位置。有关断点条件的详细信息,请参阅中断条件。

tbreak args
设置仅为一站启用的断点。该ARGS是相同的break命令,并且断点以同样的方式设置,但断点在第一次程序中断后自动删除。请参阅禁用断点。

hbreak args
设置硬件辅助断点。该ARGS是相同的 break命令和断点以同样的方式设置,但断点需要硬件支持,某些硬件可能不支持此功能。其主要用途是EPROM / ROM代码调试,因此您可以在不更改指令的情况下在指令处设置断点。这可以与SPARClite DSU和大多数基于x86的目标提供的新陷阱生成一起使用。当程序访问分配给调试寄存器的某些数据或指令地址时,这些目标将生成陷阱。但是,硬件断点寄存器可以占用有限数量的断点。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值