gdb.execute (command [, from_tty [, to_string]])
- это то, что вы (мы: D) ищем.Вы можете посмотреть на описание функции .Первый аргумент цитируется команда GDB , второй я не совсем понял, я полагаю, потому что он мне не нужен, просто оставьте его false .А третий определяет, куда будет выводиться поток команды.Если false (по умолчанию), он просто будет напечатан, если true , вывод будет заключен в строку и вернется к вам, так что вы можете назначитьэто переменная.
Пример:
(gdb) py MyVar = gdb.execute("info f",False,True)
(gdb) py print(MyVar)
Stack level 0, frame at 0x7fffffffdda0:
rip = 0x4006a6 in open@plt; saved rip 0x4007b9
called by frame at 0x7fffffffddc0
Arglist at 0x7fffffffdd90, args:
Locals at 0x7fffffffdd90, Previous frame's sp is 0x7fffffffdda0
Saved registers:
rip at 0x7fffffffdd98
(gdb)
Вас также может заинтересовать gdb.parse_and_eval (expression)
.Это дает простой способ использования так называемых переменных удобства из GDB :
(gdb) set $MyVar = "PinkyPie is the best!"
(gdb) pi
>>> MyStr = gdb.parse_and_eval("$MyVar")
>>> print(MyStr)
"PinkyPie is the best!"
>>>
(gdb)