Debugging C++ Applications Using HP WDB (766162-001, March 2014)
Example 5 Sample Program for Debugging a Member Function
1 #include <iostream>
2 using namespace std;
3
4 class myclass {
5 public:
6 static int s_member;
7 static void s_func(void);
8 int member;
9 void func(void);
10 };
11
12 int myclass::s_member = 1;
13
14 void myclass::s_func() {
15 s_member++;
16 cout << s_member << endl;
17 }
18
19 void myclass::func(void) {
20 this->member++;
21 cout << member << endl;
22 }
23
24 int main() {
25 myclass myobj1, myobj2;
26 myobj1.member = myobj2.member = 1;
27 myobj1.func();
28 myobj2.func();
29 myclass::s_func();
30 return 0;
31 }
The WDB output snippet for this program is as shown below:
(gdb) b myobj1.func()
Breakpoint 2 (deferred) at "myobj1.func()" ("myobj1.func()" was not found).
Breakpoint deferred until a shared library containing "myobj1.func()" is loaded.
(gdb) b myclass::func() // non-static member function.
Breakpoint 3 at 0x4001970:1: file member_function.C, line 20 from /C++WhitePaper/member_function.
(gdb) b myclass::s_func() // static member function
Breakpoint 4 at 0x4001b30:0: file member_function.C, line 15 from /C++WhitePaper/member_function.
...
(gdb) n
27 myobj1.func();
(gdb) call myobj1.func() // Non-static member function
2
(gdb) call myobj2.func()
2
(gdb) call myclass::s_func() // Static member function
2
(gdb) call myclass::s_func()
3
...
(gdb) s
myclass::func (this=0x7ffff004) at member_function.C:20
20 this->member++;
(gdb) p this.member // this pointer
$1 = 1
(gdb) p member
$2 = 1
(gdb) p this
$3 = (class myclass * const) 0x7ffff004
(gdb) ptype this
Debugging member function 13