Есть ли какой-нибудь удобный способ проверить значения переменных-членов класса в Eclipse? - PullRequest
0 голосов
/ 10 июля 2019

Я пишу некоторый код, который использует класс std::vector для хранения объектов определенного пользователем класса. Для отладки мне нужно следить за несколькими конкретными переменными-членами этого класса. С этой целью я перешел к представлению переменных в моей перспективе отладчика и поместил соответствующие переменные-члены в наблюдение. Однако в представлении выражений я получил переменные, которые выглядели примерно так:

((((((class std::_Vector_base >::_Vector_impl_data) ((((class std::_Vector_base >) ((baseExpression).baseExpression)))._M_impl)))._M_start))->expressionPtr)

Само собой разумеется, это довольно раздражает, чтобы смотреть на.

Я попытался отредактировать имена переменных в столбце «выражение» в представлении выражений, однако, казалось, что вся переменная была удалена из окна просмотра. Например, я бы попытался установить вышеприведенное имя просто «expressionPtr» только для того, чтобы его встретили следующие ошибки:

Multiple errors reported.

1) Failed to execute MI command:
-var-create - * expressionPtr
Error message from debugger back end:
-var-create: unable to create variable object

2) Unable to create variable object

3) Failed to execute MI command:
-data-evaluate-expression expressionPtr
Error message from debugger back end:
No symbol "expressionPtr" in current context.

4) Failed to execute MI command:
-var-create - * expressionPtr
Error message from debugger back end:
-var-create: unable to create variable object

Есть ли способ назначить уникальные идентификаторы переменным-членам во время отладки, чтобы сделать это немного проще для глаз? Кроме того, поскольку векторный класс будет содержать неопределенное количество объектов во время выполнения, я также хотел бы отслеживать переменные-члены каждого объекта. Например, рассмотрим следующий код:

class Foo
{
public:
    int a_var;
    int b_var;
};

int main ()
{
    Foo a;
    Foo b;
    //some code to work with Foo::a_var and Foo::b_var
}

Я бы хотел отслеживать переменные-члены как a, так и b по мере их выделения. Некоторая помощь будет по достоинству оценена. Заранее спасибо!

1 Ответ

0 голосов
/ 11 июля 2019

Немного покопавшись, я разобрался с решением, и это было глупо просто.Все, что мне нужно было сделать, это добавить переменную объекта-члена моего векторного объекта, который содержал мои объекты класса, в список наблюдения.Я, однако, пытался добавить каждую переменную-член в список наблюдения по отдельности, как полный идиот.
В любом случае, после помещения объекта с названием std::_Vector_base<Expression, std::allocator<Expression> >::_Vector_impl_data<Expression> >::_Vector_impl_data типа std::_Vector_base<Expression, std::allocator<Expression> >::_Vector_impl_data в наблюдение моя проблема была решена.После этого все, что мне нужно сделать, это развернуть этот объект, который теперь будет отображаться в представлении выражений и альте!У меня были все необходимые переменные-члены там, где я мог их видеть.

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