GDB: создать локальную переменную? - PullRequest
1 голос
/ 26 ноября 2011

Я использую отладчик Xcode.Остановившись на точке останова, можно ли ввести команду в командной строке GDB для создания локальной переменной?Если так, то как?Пожалуйста, приведите пример.

Я знаю, что могу сделать это в коде, а затем перекомпилировать программу, но я ищу более быстрый путь.

Ответы [ 3 ]

1 голос
/ 26 ноября 2011

Значения, напечатанные командой print, сохраняются в GDB «История значений».Это позволяет ссылаться на них в других выражениях.

Например, предположим, что вы только что напечатали указатель на структуру и хотите увидеть ее содержимое.Достаточно набрать

p *$
1 голос
/ 26 ноября 2011

Поскольку для локальной переменной потребуется место в стеке, а (скомпилированный) код привязан к макету стека, нет вы не можете.

Сравнение этого с языками сценариев не совсемнеобходимо.

0 голосов
/ 04 февраля 2019

Это упоминается в комментариях, но не как ответ: если вам не нужно ссылаться на переменную в вашем коде, но вы просто хотите провести специальное исследование, вы можете использовать Удобные переменные Начните свою переменную с $:

(gdb) set $foo = method_that_makes_something()
(gdb) set $bar = 15
(gdb) p $bar
$4 = 15

. Когда вы печатаете вещи с префиксом числовой переменной, вы заметите, что вы также можете использовать их для ссылки на это значение позже:

(gdb) p $4
$5 = 15

Повторюсь: это на самом деле не влияет на стек программы или что-либо еще, поскольку это может сломать много вещей, но полезно, если вам просто нужна локальная игровая площадка, некоторые переменные цикла и т. Д.

...