在Gdb中,如何将条件断点设置为函数';s第三线

在Gdb中,如何将条件断点设置为函数';s第三线,gdb,Gdb,如何在GDB中将条件断点设置为函数的第三行 我知道我可以给出文件名+行号,但这对我不起作用。 我必须将gdb命令存储为脚本,以便以后重复,我不想每次源文件更改时都更改脚本。条件断点 输入以下内容, 假设必须在函数内的行上应用断点 (gdb) break <function-name> …你现在在功能的第三行 更新: 此外,要在变量更改值时中断,请使用以下命令: (gdb) watch variable==value 有关更多详细信息,请参阅: - -为gdb定义您自己的命令文

如何在GDB中将条件断点设置为函数的第三行

我知道我可以给出文件名+行号,但这对我不起作用。
我必须将gdb命令存储为脚本,以便以后重复,我不想每次源文件更改时都更改脚本。

条件断点
输入以下内容,
假设必须在函数内的行上应用断点

(gdb) break <function-name>
…你现在在功能的第三行

更新:

此外,要在变量更改值时中断,请使用以下命令:

(gdb) watch variable==value

有关更多详细信息,请参阅:
-

-

为gdb定义您自己的命令文件,然后在调试期间将其来源化如何?这将有助于减少大量的打字。试试这个:

创建一个文件,我们称之为mydef,其内容如下:

define cmd
  b function-where-you-want-to-break
  r
  b +2
  c
end
在gdb中加载可执行文件后,在gdb提示符中键入
source mydef
,然后键入
cmd

现在您进入了函数开始的第二行。:)
希望这有帮助

谢谢,问题是条件只在第三行有效,因为它使用函数局部变量。
(gdb) watch variable==value
define cmd
  b function-where-you-want-to-break
  r
  b +2
  c
end