1 | int a(int); |
2 | int b(int); |
3 | int c(int); |
4 | const char *print_string = "aaaaaaaaaa\n" ; |
5 | |
6 | int a(int val) |
7 | { |
8 | int return_value = val; // basic break at the start of b |
9 | |
10 | if (val <= 1) |
11 | { |
12 | return_value = b(val); // break here to stop in a before calling b |
13 | } |
14 | else if (val >= 3) |
15 | { |
16 | return_value = c(val); |
17 | } |
18 | |
19 | return return_value; |
20 | } |
21 | |
22 | int b(int val) |
23 | { |
24 | int rc = c(val); // thread step-out while stopped at "c(2)" |
25 | return rc; |
26 | } |
27 | |
28 | int c(int val) |
29 | { |
30 | return val + 3; // Find the line number of function "c" here. |
31 | } |
32 | |
33 | int complex (int first, int second, int third) |
34 | { |
35 | return first + second + third; // Step in targeting complex should stop here |
36 | } |
37 | |
38 | int main (int argc, char const *argv[]) |
39 | { |
40 | int A1 = a(val: 1); // frame select 2, thread step-out while stopped at "c(1)" |
41 | |
42 | int B2 = b(val: 2); // assignment to B2 |
43 | |
44 | int A3 = a(val: 3); // frame select 1, thread step-out while stopped at "c(3)" |
45 | |
46 | int A4 = complex (first: a(val: 1), second: b(val: 2), third: c(val: 3)); // Stop here to try step in targeting b. |
47 | |
48 | int A5 = complex (first: a(val: 2), second: b(val: 3), third: c(val: 4)); // Stop here to try step in targeting complex. |
49 | |
50 | int A6 = complex (first: a(val: 4), second: b(val: 5), third: c(val: 6)); // Stop here to step targeting b and hitting breakpoint. |
51 | |
52 | int A7 = complex (first: a(val: 5), second: b(val: 6), third: c(val: 7)); // Stop here to make sure bogus target steps over. |
53 | |
54 | return A1 + B2 + A3 + A4 + A5 + A6 + A7 + *print_string; |
55 | } |
56 | |