如何在C/C++;GDB Python脚本中的程序来实现rbreak?

如何在C/C++;GDB Python脚本中的程序来实现rbreak?,gdb,Gdb,我想从Python脚本中实现rbreak 最简单的方法是循环所有函数,并将它们的名称与Python中的正则表达式进行比较 或者,如果有一种没有显式循环的更好方法,我也很感兴趣 我希望解决方案使用一些API,如:但如果没有示例,很难做到这一点。文档肯定可以改进。提供了一个线索: The outermost block is known as the global block. The global block typically holds public global variables and

我想从Python脚本中实现
rbreak

最简单的方法是循环所有函数,并将它们的名称与Python中的正则表达式进行比较

或者,如果有一种没有显式循环的更好方法,我也很感兴趣


我希望解决方案使用一些API,如:但如果没有示例,很难做到这一点。

文档肯定可以改进。提供了一个线索:

The outermost block is known as the global block.
The global block typically holds public global variables and functions.

A gdb.Block is iterable.
所以我们所需要做的就是抓住全局块,并对其进行迭代

使用以下测试:

int a_global;
int foo() { return a_global; }
int bar() { return foo(); }
int main() { return bar(); }

$ gcc -g t.c && gdb -q ./a.out

(gdb) py
> for sym in gdb.lookup_global_symbol('main').symtab.global_block():
>   print(sym.name, sym.is_function)
^D
('foo', True)
('bar', True)
('main', True)
('a_global', False)