Debugging C++ Applications Using HP WDB (766162-001, March 2014)

Example 3 Sample Program for Debugging C++ Scope Resolution Operator
1 #include <stdio.h>
2
3 struct Manager {
4 static int managerMember; // Static data member
5
6 struct BaseElement { // Base structure
7 int baseElementMember;
8 };
9
10 struct DerivedElement : BaseElement { // Derived structure
11 int derivedElementMember;
12 };
13
14 void static print(); // Static member function (not inlined)
15 };
16
17 void Manager::print() {
18 managerMember++;
19 printf("%d\n",managerMember);
20 }
21
22 int Manager::managerMember=2;
23
24 void foo(struct Manager::BaseElement * p) {
25 printf("%p\n", p);
26 }
27
28 int main() {
29 Manager::DerivedElement d;
30 d.baseElementMember = 3;
31 d.derivedElementMember = 4;
32
33 Manager::print();
34 foo(&d);
35
36 return 0;
37 }
The WDB output snippet for this program is as shown below:
(gdb) b main
Breakpoint 1 at 0x4000b00:0: file scope_resolution.C, line 30 from /scope_resolution.
(gdb) r
Starting program: /scope_resolution
Breakpoint 1, main () at scope_resolution.C:30
30 d.baseElementMember = 3;
(gdb) n
31 d.derivedElementMember = 4;
(gdb) p Manager::managerMember // Displaying static data member.
$1 = 2
(gdb) call Manager::print() // Calling static member function.
3
(gdb) n
33 Manager::print();
(gdb) n
4
34 foo(&d);
(gdb) b Manager::print // Setting breakpoint
Breakpoint 2 at 0x4000c00:0: file scope_resolution.C, line 18 from /scope_resolution.
(gdb) s
foo (p=0x7fffefd0) at scope_resolution.C:25
25 printf("%p\n", p);
(gdb) p *p
10