当我在.gdbinit
中使用:
b foobar
我明白了:
Function "foobar" not defined.
Make breakpoint pending on future shared library load? (y or [n]) [answered N; input not from terminal]
现在第一行是可以理解的,因为该函数驻留在共享库中。但是,默认为否。
如何强制它在这种非交互式场景中设置断点?
答案 0 :(得分:10)
可以使用set breakpoint pending on
完成此操作。来自Setting Breakpoints文档:
gdb提供了一些额外的命令来控制当
break
命令无法将断点地址规范解析为地址时发生的情况:
set breakpoint pending auto
- 这是默认行为。当gdb找不到断点位置时,它会查询是否应创建挂起断点。
set breakpoint pending on
- 这表示无法识别的断点位置应自动导致创建挂起的断点。
set breakpoint pending off
- 这表示不创建挂起的断点。任何无法识别的断点位置都会导致错误。