gdb Could not find operator
double var1, var2;
std::vector<double *> x;
var1 = 1;
var2 = 2;
x.push_back(&var1);
x.push_back(&var2);
When I debug this code in gdb and try print x[0]
or *x[0]
I get:
Could not find operator[].
My understanding is that the compiler/linker includes only the member functions present in the source code and those are the ones I can use in gdb.
Your understanding is incorrect / incomplete.
std::vector
is a template class. Without explicit instantiation, the compiler is required to instantiate only the methods called (usually a subset of methods present in the source).
Is there a way to include every member function of std::vector so I can access them in gdb?
For a given type T
, you should be able to explicitly instantiate entire vector for that T
, by requesting it, e.g.:
template class std::vector<double>;
Try print by inner member of the vector.
print *(x._M_impl._M_start+0)
Here 0
is the index of data you want to inspect.