c - Gdb 条件正则表达式中断

标签 c regex debugging gdb

gdb 是否允许条件正则表达式中断?

我有一个源文件 timer.c、一个 int64_t 刻度以及一个返回它的函数 timer_ticks()。 都没有

rbreak timer.c:. if ticks >= 24

也不

rbreak timer.c:. if ticks_ticks() >= 24

放置任何断点。

如果我删除正则表达式部分或条件部分,则会设置断点。

最佳答案

这里有一种方法可以完成它。它需要几个步骤,并且需要对 gdb 的输出进行一些目视检查。

首先,运行rbreak命令并记下它设置的断点编号。

(gdb) rbreak f.c:.
Breakpoint 1 at 0x80486a7: file f.c, line 41.
int f();
Breakpoint 2 at 0x80486ac: file f.c, line 42.
int g();
Breakpoint 3 at 0x80486b1: file f.c, line 43.
int h();
Breakpoint 4 at 0x8048569: file f.c, line 8.
int main(int, char **);

现在,循环遍历该断点范围并使用 cond 命令向每个断点添加条件:

(gdb) set $i = 1
(gdb) while ($i <= 4)
 >cond $i ticks >= 24
 >set $i = $i + 1
 >end
(gdb) info breakpoints
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x080486a7 in f at f.c:41
        stop only if ticks >= 24
2       breakpoint     keep y   0x080486ac in g at f.c:42
        stop only if ticks >= 24
3       breakpoint     keep y   0x080486b1 in h at f.c:43
        stop only if ticks >= 24
4       breakpoint     keep y   0x08048569 in main at f.c:8
        stop only if ticks >= 24

关于c - Gdb 条件正则表达式中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667191/

相关文章:

c - 使用 getopt 处理简单的命令行参数

python - 如何在Python的SMBCoonect listPath函数中设置模式匹配

java - 为什么我的 Android 程序中会出现 PatternSyntaxException?

sql - Oracle 调试技术

c - 正则表达式在c中不匹配,但可以与在线解释器一起使用

php - 在文件中间覆盖

c++ - 这个c++代码有什么问题

linux - 如何让 gdb 从已安装的库中加载符号?

cscope: -c 或 -T 命令行和旧符号数据库不匹配

regex - 匹配除一个以外的所有单词