如何在C/C++;GDB Python脚本中的程序来实现rbreak?
我想从Python脚本中实现如何在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
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)
瞧