gdb Could not find operator
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.

浙公网安备 33010602011771号