我正在编写一些代码,这些代码利用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
的成员变量以及它们的分配时间。
一些帮助将不胜感激。预先感谢!
答案 0 :(得分:0)
经过一番弄乱后,我想出了解决方案,这很简单。我要做的就是将包含我的类对象的矢量对象的成员对象变量添加到监视列表。但是,我试图像完整的白痴一样将每个成员变量分别添加到监视列表中。
无论如何,将类型为std::_Vector_base<Expression, std::allocator<Expression> >::_Vector_impl_data<Expression> >::_Vector_impl_data
的标题为std::_Vector_base<Expression, std::allocator<Expression> >::_Vector_impl_data
的对象放在手表上之后,我的问题就解决了。之后,我要做的就是扩展这个对象,该对象现在将在表达式视图和中提琴中列出!我将所有必需的成员变量都放在可以看到它们的位置。