Gdb интерпретировать адрес памяти как объект

Я изучаю сбой, основанный на доступном дампе ядра. Сбой приложения - это программа на С++, построенная с помощью gcc и работающая на RH5. Обратный ход кажется действительным до кадра №1. Там, пытаясь напечатать объект, который я получаю   <invalid address>, <error reading variable> Так как у меня есть адрес объекта из фрейма # 2, это допустимая презумпция, что я могу как-то "выгрузить" память, в которой объект выделен, и все еще собирать некоторую информацию. Кроме того, вместо того, чтобы угадывать, как выравнивается объект, могу ли я заставить gdb печатать адрес так, как если бы он был объектом, хотя он обнаружил некоторую ошибку. Моя идея состоит в том, что, возможно, объект уже удален, но, возможно, память все еще существует, и я могу напечатать некоторую переменную-член.

Прокомментируйте это, возможно, и если да, то как это должно быть сделано в терминах gdb. 10x.

Ответы

Ответ 1

Хорошо, если у вас есть адрес, который вы всегда можете сделать:

print *(class MyClass*)pointer_var