Я использую Python для сценария сеанса GDB. Моя цель - запускать функцию всякий раз, когда достигается точка останова, используя gdb.events.stop.connect
.
Вот мой код по сути, который я вызываю из gdb с помощью команды source main.py
:
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)
на самом деле завершает sh выполнение команды gdb перед продолжением. Документации очень мало, но я предполагаю, что эта функция является многопоточной, что объясняет эффективность wait
как исправления.
Есть ли способ сделать это чище, подождав, пока поток, созданный gdb.execute
, завершит обработку sh, не имея доступа к телу этого метода?