сохранить отображение GDB в переменную - PullRequest
2 голосов
/ 06 июля 2010

Есть ли способ сохранить выходные данные последней команды в GDB в строку? Я хотел бы сохранить информацию об адресе выбранных инструкций уровня машины. Перенаправление вывода не является решением, так как это приведет к слишком большому выводу. Симулятор также был бы решением, но я хотел бы посмотреть, будет ли это возможно с GDB, так как я хочу анализировать только небольшой фрагмент кода.

Так что мне нужно что-то вроде этого:

(gdb) display/i $pc 
(gdb) 1: x/i $pc  0x100000d2e <main+61>:    jle    0x100000d02 <main+17
(gdb) set $foo = ??? somehow set this to display line 1
(gdb) call myFunc($foo)

(я исключил циклические элементы управления, чтобы сделать пример простым)

Или был бы другой способ сделать это?

1 Ответ

0 голосов
/ 06 июля 2010

Насколько я знаю, это невозможно, что довольно удивительно, если учесть всю историю про Lisp автора :) Вам понадобится либо перенаправление (grep, sed и awk, чтобы творить чудеса с большими файлами)и всегда есть perl), или ваше собственное декодирование команд на основе $pc, которое, как я полагаю, не вариант.

Тогда я не совсем понимаю, что вы пытаетесь сделать.Выяснить цели прыжка?Правильность переезда?Что вы не знаете о коде до времени выполнения?Более подробная информация, вероятно, может указывать в лучшем направлении.

Редактировать:

Только некоторые ссылки - еще не пробовали - вы можете поиграть с настройкой script-extension и посмотреть, сможете ли вы сделатьКомандные файлы Python работают для вас: см. Расширение GDB и Python в GDB .

...