gdb.write при запуске gdb continue (модульное тестирование с помощью arm-gdb-python)
Я создаю скрипт автоматического модульного тестирования на python и хотел бы узнать статус скрипта в окне GDB.
Я понимаю, что мы можем использовать gdb.write()
написать в stdout
ГДБ. Но это происходит только тогда, когда скрипт Python выполняется без запуска GDB (запустив gdb.execute("continue")
).
Пример сценария
import threading
import time
class MyThread(threading.Thread):
def run(self):
gdb.write("{} started!".format(self.getName()))
time.sleep(1)
gdb.write("{} finished!".format(self.getName()))
if __name__ == '__main__':
for x in range(4):
mythread = MyThread(name = "Thread-{}".format(x + 1))
mythread.start()
time.sleep(.9)
Это напечатает
(gdb) source quick_test.py
Thread-1 started!
Thread-2 started!
Thread-1 finished!
Thread-3 started!
Thread-2 finished!
Thread-4 started!
Thread-3 finished!
Но если я сделаю
def main():
ser_thread = MyThread_serial(name = "Thread-serial")
ser_thread.start()
DebugPrintingBreakpoint("../Src/vmu.c:2751")
gdb.execute("continue")
if __name__ == "__main__":
print("Serial gdb testing ")
main()
Выход на терминал GDB является
Serial gdb testing Breakpoint 1 at 0x804c610: file ../Src/vmu.c, line 2751.
Note: automatically using hardware breakpoints for read-only addresses.
И после этого никто другой stdout
виден.
Но как только я достигну точки останова и получу gdb stdin
назад я вижу gdb.write
выходные данные, как они были в буфере (я должен что-то набрать, чтобы увидеть стандартный вывод).
Вопрос
Как посмотреть stdouts во время работы GDB.