я могу найти через GDB, если переменная принадлежит к куче или стеку? - PullRequest
5 голосов
/ 09 марта 2011

Моя точка останова указывает на переменную. (указывает куда-то. Могу ли я выяснить, принадлежит ли где-нибудь куча или стек?)

есть ли способ узнать, где находится начало и конец стека? Есть ли способ найти, где находится начало и конец кучи?

Ответы [ 3 ]

7 голосов
/ 09 марта 2011

Используйте info proc mappings для /proc информации о вашей структуре памяти.

0 голосов
/ 09 марта 2011

В зависимости от вашего компилятора, вы можете иметь символ типа __stack или __stack_end в информации отладки.Если это так, вы можете использовать эти символы для сравнения вашего указателя с ними.

0 голосов
/ 09 марта 2011

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

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