我正在使用Python编写gdb会话脚本。我的目标是使用gdb.events.stop.connect
在遇到断点时运行一个函数。
本质上是我的代码,我通过运行source main.py
从gdb调用:
RESULT = None def breakpoint_handler(event): global RESULT RESULT = do_something(event) # boolean sleep(1) def main(): global RESULT gdb.events.stop.connect(breakpoint_handler) command = "some gdb command" gdb.execute(command) sleep(1) if RESULT: # do something pass else: # something else pass main()
此代码有效,但仅感谢
sleep
调用,它试图确保gdb.execute(command)
调用在继续之前确实完成了gdb命令的执行。文献很少,但我猜想该函数是线程化的,这说明了wait
作为修复程序的有效性。
是否有一种方法可以通过等待gdb.execute
创建的线程来完成处理,而无需访问此方法的主体,从而使它更清洁?
我正在使用Python编写gdb会话脚本。我的目标是使用gdb.events.stop.connect在遇到断点时运行一个函数。这实际上是我的代码,我通过运行...
您可以在回调中设置一个事件,然后在主线程中等待它。这是一个示例,其中计时器在5秒钟后调用了回调: