欢迎关注公众号【自动驾驶事务所】,分享更多以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命令和断点以同样的方式设置,但断点需要硬件支持,某些硬件可能不支持此功能。其主要用途

本文详细介绍了GDB中设置和管理断点的各种方法,包括使用break、tbreak、hbreak、rbreak等命令,以及条件断点、硬件断点、自动删除的断点。还讲解了如何在C++程序中处理重载函数和模板函数的断点,以及共享库加载时断点的处理。同时,文章涵盖了断点的启用、禁用、条件评估模式,以及挂起断点的概念。

3万+

被折叠的 条评论
为什么被折叠?



