这是我的课程的一个极其简化的版本:
Class MyClass {
public:
int sizeDesired;
};
我MyClass
在 main 中创建一个实例向量:
int main(int argc, char **argv) {
std::vector<MyClass> myvec;
for(int i=0; i<10; ++i)
myvec.push_back(MyClass());
for(int i=0; i<myvec.size(); ++i)
doWork(myvec[i]);
return 0;
}
有一些内存损坏(我认为)错误导致我的程序崩溃。我观察到MyClass::sizeDesired
程序崩溃时的值是垃圾。所以,我想为每个MyClass:sizeDesired
成员设置一个观察点,这样我就可以准确地看到这些成员的值何时发生变化。
使用 GDB,我该怎么做?
当我在将所有实例推送到主要实例后中断时MyClass
,std::vector<MyClass>
我会这样做
(gdb) watch myvec[0].sizeDesired
但 GDB 只是挂起。它不显示新的命令提示符(即,它不显示(gdb)
在后续行上......只是一个空白行,似乎没有发生任何事情)。
我对基于非 GDB 的解决方案持开放态度。如果在 GDB 中无法进行这种类型的检查/监控,是否可以使用替代工具?