小编Ski*_*ter的帖子

只有当函数的返回值等于“值”时,gdb 才能有条件地非交互式地中断函数吗?

我使用带有 -x 参数的 gdb 进行调试,而不必在每个断点处以交互方式继续。

[root@StackOverflow.com] $ cat gdb_cmds_01
b SomeSourceFile.cpp:123
commands
bt
cont
end
Run Code Online (Sandbox Code Playgroud)

然后我附加到一个在执行中使用 SomeSourceFile.cpp 的进程:

[root@StackOverflow.com] $ gdb -p 'pidof SomeRunningProgram' -x gdb_cmds_01
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.el6)
...
<GDB outputs a set S of backtraces as instructed by gdb_cmds_01>
Run Code Online (Sandbox Code Playgroud)

现在,让 SomeSourceFile.cpp:123 包含如下一行:

if (foo(person, &place, *time) == "Alice") { ... <do stuff > ... }
Run Code Online (Sandbox Code Playgroud)

再假设我想在SomeSourceFile打破:123只有回归foo(...)不是等于“爱丽丝”。

基于: 如何在 GDB 中检查函数的返回值?,我知道gdb可以检查函数的返回值。

https://sourceware.org/gdb/onlinedocs/gdb/Break-Commands.html告诉我,我可以检查一个变量非交互的价值:

<...>

例如,这里是如何使用断点命令在 x 为正数时将 x …

c++ unix linux debugging gdb

5
推荐指数
1
解决办法
251
查看次数

标签 统计

c++ ×1

debugging ×1

gdb ×1

linux ×1

unix ×1