GDB не может получить доступ к памяти по адресу - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу использовать точку останова в функции UPtest для остановки на 0x000000000040124 c.

enter image description here enter image description here

запустить 111 222 333 enter image description here enter image description here Мне нужно отобразить 32 записи в верхней части стека.

x / 32wx $ esp, но показать Не удается получить доступ к памяти по адресу 0xffffffffffffe0a0.

Я хочу найти обратный адрес основной программы, как я могу изменить его для отображения? Как показано на рисунке ниже.

enter image description here

1 Ответ

1 голос
/ 09 апреля 2020

Проблема в том, что регистр $esp является 32-разрядным, но адреса на вашей цели 64-разрядные. Когда вы делаете x/32wx $esp, GDB читает регистр $rsp, который имеет значение 0x7fffffffffffe0a0, и маскирует его до 32-битного, то есть 0xffffe0a0, тогда это знак расширения этого до 64-битного, давая 0xffffffffffffe0a0 .

Попробуйте x/32wx $rsp и вам повезет больше.

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