Как создать экземпляр класса и назначить его переменной? - PullRequest
2 голосов
/ 17 февраля 2012

Для кода C ++ при отладке с использованием GDB: 1) Как создать переменную в GDB?Используя команду gdb / mi?2) Как создать экземпляр класса в GDB.3) Как назначить созданный экземпляр созданной переменной в gdb для использования в будущем?Например:

C++ code:
class C { public:int value; }

gdb commands (pseudo-code):
var v = new C()
print v.value

1 Ответ

2 голосов
/ 24 мая 2013

"new" в настоящее время не поддерживается в GDB.Это не обрабатывается в парсере вообще.Для этого в gdb bugzilla открыта ошибка, если вы хотите отслеживать прогресс в ней.Кто-то (кашель) работает над этим.

Между тем, я думаю, что вы можете сделать это вручную.Я никогда не пробовал это по-настоящему.Идея примерно такая:

set var $new = malloc(sizeof(struct Whatever))
call Whatever::Whatever($var)

Однако в этом вызове могут потребоваться дополнительные аргументы, поскольку ABI C ++ задает некоторые магические скрытые аргументы.

Другой подход заключается в создании удобства отладкифункция в вашей программе:

whatever *new_w() { return new whatever(); }

Тогда вы можете просто вызвать это напрямую из GDB.

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