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

时间:2010-06-10 09:31:19

标签: gdb

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

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

2 个答案:

答案 0 :(得分:3)

条件断点


输入以下内容,
假设您必须在函数

内的行应用断点
(gdb) break <function-name>

GDB将回复如​​下 断点 1 位于0xaddr:filename,linenumber。

注意断点的编号
(在这种情况下,它是 1

输入以下命令
(适当地替换断点号)

(gdb) condition 1 <condition>

在运行期间,您可以使用 next 命令跳过(步进)到第3行

(gdb) next
(gdb) next

..而你正处于该职能部门的第3行!!

<强>更新

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

(gdb) watch variable==value

有关详细信息,请参阅:
- GDB:Conditional Breakpoints
- Hacking into an executable using GDB

答案 1 :(得分:3)

如何为gdb定义自己的命令文件,然后在调试期间获取它?这将有助于减少一点点打字。试试这个:

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

define cmd
  b function-where-you-want-to-break
  r
  b +2
  c
end

在gdb中加载可执行文件后,在gdb提示符下键入source mydef,然后输入cmd

现在你进入功能开始的第二行。 :) 希望这有帮助!