Debugging static variable in inlined member function

Peng Yu pengyu.ut@gmail.com
Mon Jan 8 15:55:00 GMT 2007


Hi,

I have the following program listed below this email. I can not print
_a in the inlined version. But it is OK to print _a in the non-inlined
version. Can you tell me how to debug the inlined version of _a?

(gdb) s
main () at main.cc:32
32        std::cout << a.a() << std::endl;
(gdb) s
A::a (this=0xbff21077) at main.cc:11
11            std::cout << "inline" << std::endl;
(gdb) n
inline
12            ++ _a;
(gdb) p _a
No symbol "_a" in current context.

Thanks,
Peng

#include <iostream>

#define INLINE

class A {
  public:
    A() { }
#ifdef INLINE
    int a() {
      static int _a = 10;
      std::cout << "inline" << std::endl;
      ++ _a;
      return _a;
    }
#else
    int a();
#endif
  private:
};

#ifndef INLINE
int A::a() {
  static int _a = 10;
  std::cout << "not inline" << std::endl;
  ++ _a;
  return _a;
}
#endif

int main() {
  A a;
  std::cout << a.a() << std::endl;
}



More information about the Gdb mailing list