В программе, которую я отлаживаю, я наблюдаю, что ячейка памяти (скажем, 0x40102010) доступна в одной точке, но она становится недоступной позже (вероятно, из-за вызова munmap()
). Программа аварийно завершает работу с сегфоутом, потому что пытается прочитать это местоположение.
Мне нужно найти вызов munmap()
, который делает это местоположение доступным. До сих пор я пытался:
Добавление точки наблюдения в ячейку памяти. К сожалению, GDB, по-видимому, не рассматривает событие unmap как изменение местоположения, поэтому точка наблюдения никогда не срабатывает. результаты с использованием специального инструмента. Затем этот инструмент позволяет мне искать любые события, которые влияют на данное местоположение.
(Возможно, я получаю другое местоположение для этого объекта, когда я запускаю процесс в strace
, если в таком случае я не смогу отладить это с помощью подхода (2))
Поэтому мне интересно, есть ли способ добавить точку останова, когда определенная область памяти становится недоступной, чтобы я мог проверить стек вызовов, местные жители и т. д. c. Это возможно в GDB?
Спасибо.