Может кто-нибудь помочь в объяснении команды печати в GDB - PullRequest
1 голос
/ 29 апреля 2009

"Имена, начинающиеся с $, относятся к регистрам (со значениями, которые они будут иметь если программа вернется к выбранному кадру стека, восстанавливая все регистры, сохраненные в последующих кадрах) или в отладчике «удобные» переменные (любое такое имя не является известным регистром). Используйте выражения присваивания для присвоения значений вспомогательным переменным. "

над строкой из справки print в gdb. Может кто-нибудь объяснить, пожалуйста, выше линии. Особенно, какой регистр упоминается здесь? Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2009

Таким образом, в соответствии со страницей руководства, print означает «Показать значение выражения». Таким образом, речь идет о значениях регистров в вашем процессоре в текущей точке останова. Вот некоторая подробная информация о значениях регистров отладки.

GDB имеет четыре «стандартных» имени регистров, которые доступны (в выражениях) на большинстве машин - всякий раз, когда они не конфликтуют с канонической мнемоникой архитектуры для регистров. Имена регистров $ pc и $ sp используются для регистра счетчика программы и указателя стека. $ fp используется для регистра, который содержит указатель на текущий кадр стека, а $ ps используется для регистра, который содержит состояние процессора. Например, вы можете напечатать счетчик программ в шестнадцатеричном виде с помощью

Вы можете получить больше информации о том, какие регистры вам доступны, с помощью

info registers

и

info all-registers

, а затем дополнительная информация о конкретном регистре с помощью

info registers register_name

Надеюсь, это поможет!

1 голос
/ 29 апреля 2009

Имеется в виду регистры процессора. Например, EAX, ECX, ESP, EIP ...

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