如何在GDB中将条件断点设置为函数的第3行?
我知道我可以提供文件名+行号,但这对我不起作用 我必须将gdb命令存储为脚本以便以后重复它,并且我不希望每次源文件更改时都更改脚本。
答案 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
现在你进入功能开始的第二行。 :) 希望这有帮助!