В настоящее время я пишу скрипт Python GDB. Проблема в том, что он должен быть совместим с GDB 7.1. Поэтому я сначала написал скрипт для GDB 7.3.1 и использовал следующую функцию для получения вывода команды gdb (GDB 7.3.1):
myvar = gdb.execute("info target", False, True)
Последний параметр этой функции заключается в том, что она должна возвращать результат в виде строки (что вполне логично; зачем мне выполнять такую команду;))
В GDB версии 7.1, хотя кажется, что последний параметр недоступен , таким образом, эта строка (GDB 7.1):
myvar = gdb.execute("info target", False)
возвращает None
.
Есть ли шанс получить выходные данные этой команды? Я уже пытался перенаправить стандартный вывод моего скрипта python в файл, затем загружал этот файл, но, очевидно, стандартный ввод и вывод моего скрипта python перезаписан средой gdb , поэтому вывод из gdb. команда execute не записывается в мой файл.
Единственное, о чем я мог подумать сейчас, - это обернуть мой сценарий сценарием bash, который сначала открывает GDB сценарием Python, выполняющим различные команды, а затем передает его в файл. Затем снова откройте GDB, но с помощью другого скрипта Python, который загружает файл, анализирует его, а затем выполняет другие команды на основе ввода из файла и так далее. Но это действительно самое уродливое решение, которое я могу придумать.
Так есть ли способ получить выходные данные gdb.execute в GDB 7.1?