problems with list...
Daniel Jacobowitz
drow@mvista.com
Sat Mar 1 16:57:00 GMT 2003
On Wed, Sep 11, 2002 at 05:29:46PM -0700, Craig Maloney wrote:
> Hi all.
>
> I've been having problems using list functions inside of gdb.
>
> -----------------------------------
> #include <list>
> #include <vector>
>
> using namespace std;
>
> main(){
> list<int> l;
> vector<int> v;
> l.push_back(0);
> l.push_back(1);
> v.push_back(0);
> v.push_back(1);
>
> }
> --------------------------------------------
>
> if I try:
> "p l.size()"
>
> I get a "Cannot evaluate function -- may be inlined" even if I compile
> with an -fno-inline.
> "ptype l" gives something reasonable which shows "size_t size() const;"
>
> None of the same problems with the vector.
>
> Does anyone have any idea why this doesn't work?
Craig,
Sorry this reply is late - I missed your message. You've hit a
fundamental problem of debugging C++ templates. Because
std::list<int>::size() is never called by the program, it is never
instantiated, and thus it doesn't exist for GDB to call it.
On the other hand, I'll bet that the implementation of v.push_back()
references v.size(); that's logical for a vector.
If you include an explicit call to l.size() in the program somewhere,
then GDB calls the method properly.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
More information about the Gdb
mailing list