GDB для поиска указателей в заданной области памяти - PullRequest
1 голос
/ 28 декабря 2011

Я хочу ввести сценарий Python в GDB , этот сценарий используется для создания новой команды uming, принимая его имя как «fp» , его функция заключается в поиске в данной области памяти, чтобы проверить, содержит ли эта область указатели, которыенаходятся в программе , если в этой области памяти есть указатели , команда напечатает адрес указателей и напечатает адрес, на который указывает указатель。

пример :

(gdb) fp0x442032 100 (первый параметр - начальный адрес , 100 - это размер для поиска)

Если в программе отладки есть указатель S, его адрес равен 0x442033 и указывает на адрес 0x442039 20, поэтомувывод должен быть:

0x442033 -> 0x442039

Мой вопрос: как я могу использовать GDB для поиска адресов указателей? Как это реализовать? Спасибо.

1 Ответ

1 голос
/ 28 декабря 2011

Возможно, вы ищете встроенную команду GDB find. Документация здесь .

Если в программе отладки есть указатель с именем S, его адрес будет 0x442033

Если есть указатель S, его адрес почти наверняка не 0x442033, поскольку загрузка невыровненных данных влечет за собой значительные потери производительности.

Если вы ищете, чтобы найти «любой» указатель в данной памяти (чего бы не делал find), вы, вероятно, делаете что-то не так: любая нетривиальная программа будет иметь 100 или 1000 указателей и ищет поскольку «любой» (а не конкретный интересующий вас указатель) может быть признаком того, что вы не понимаете свою программу.

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