Я пишу сценарий Python для отладки встроенного программного обеспечения, работающего на чипе ARM.
Для этого я использую библиотеку pygdbmi python. Эта библиотека позволяет мне настраивать и запускать мой скрипт, но есть одна функция, которую я не могу найти: я не нахожу способ приостановить выполнение моей программы.
Я хочу запустить отлаживаемое мной программное обеспечение в течение определенного времени (скажем, 1 секунды), прежде чем приостанавливать его для проверки значений глобальных переменных и т. Д. Для этого я хотел отправить gdb команду continue для запуска моей программы, а затем спите на 1 секунду и, наконец, отправьте «-exec-interrupt», чтобы приостановить программу и отправить новые команды в gdb.
Вот часть исходного кода, которую я использую для этого:
gdbmi = GdbController("arm-none-eabi-gdb")
# swPath is the path to my software binary
gdbmi.write('-file-exec-and-symbols %s' % swPath)
# I have to connect to an openOCD server
gdbmi.write('tar rem :3333')
gdbmi.write('monitor reset halt')
gdbmi.write('load')
gdbmi.write('c')
time.sleep(1)
gdbmi.write('-exec-interrupt')
Когда я выполняю этот скрипт python, возникает следующая ошибка:
raise GdbTimeoutError('Did not get response from gdb after %s seconds' % timeout_sec)
pygdbmi.gdbcontroller.GdbTimeoutError: Did not get response from gdb after 1 seconds
Похоже, что я не могу написать новую команду в gdb, когда работает отлаженное программное обеспечение.
Как мне приостановить работу своего программного обеспечения? Когда я использую GDB вручную, я делаю это, отправляя сигнал Ctrl-C (SIGINT), и я хотел бы сделать то же самое с python.