У меня есть указатель в GDB, как я могу узнать, где он был впервые выделен в куче?
В WinDBG это можно сделать с помощью !heap -p -a <0x12345678>
после включения gflags /i <*exe> +ust
Так как Valgrind может сказать мне, где выделена память (когда он обнаруживает некоторые утечки), я думаю, это также возможно?
(Это НЕ касается точки наблюдения. Это происходит в ситуации, когда я случайно разбиваюв приложение In GDB, посмотрите на указатель и хотите узнать, «кто создал этот фрагмент памяти»?)
Использование обратной отладки в GDB - очень новый способ и, вероятно, правильный способ решения этой проблемы.Я столкнулся с некоторой проблемой при таком подходе с GDB 7.1 - последней стабильной версией.Обратная отладка - довольно новая функция в GDB, поэтому мне нужно было проверить HEAD (7.2), чтобы исправить это.
Вероятно, это говорит о зрелости подхода GDB, но я думаю, что его обязательно следует использовать, когда онболее зрелым.(Потрясающая особенность!)