1# connect gdb to Valgrind gdbserver:
2target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcleak
3echo vgdb launched process attached\n
4monitor v.set vgdb-error 999999
5#
6#
7# insert break:
8break breakme
9#
10# continue till each break and execute via gdb the leak search as done in the C code.
11continue
12#
13#
14#   fprintf(stderr, "expecting details 10 bytes reachable\n"); fflush(stderr); breakme();
15up
16monitor leak_check full reachable any
17continue
18#   VALGRIND_DO_LEAK_CHECK;
19#
20#   fprintf(stderr, "expecting to have NO details\n"); fflush(stderr);
21up
22monitor leak_check full reachable increased
23continue
24#   VALGRIND_DO_ADDED_LEAK_CHECK;
25#
26#   b10--; // lose b10
27#   b21 = malloc (21);
28#   fprintf(stderr, "expecting details +10 bytes lost, +21 bytes reachable\n"); fflush(stderr); breakme();
29up
30monitor leak_check full reachable increased
31continue
32#   VALGRIND_DO_ADDED_LEAK_CHECK;
33#
34#   for (i = 0; i < 2; i ++)
35#      b32_33[i] = malloc (32+i);
36#   fprintf(stderr, "expecting details +65 bytes reachable\n"); fflush(stderr); breakme();
37up
38monitor leak_check full reachable increased
39continue
40#   VALGRIND_DO_ADDED_LEAK_CHECK;
41#
42#   fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); breakme();
43up
44monitor leak_check full reachable increased
45continue
46#   VALGRIND_DO_ADDED_LEAK_CHECK;
47#
48#   b10++;
49#   fprintf(stderr, "expecting details +10 bytes reachable\n"); fflush(stderr); breakme();
50up
51monitor leak_check full reachable increased
52continue
53#   VALGRIND_DO_ADDED_LEAK_CHECK;
54#
55#   b10--;
56#   fprintf(stderr, "expecting details -10 bytes reachable, +10 bytes lost\n"); fflush(stderr); breakme();
57up
58monitor leak_check full reachable changed
59continue
60#   VALGRIND_DO_CHANGED_LEAK_CHECK;
61#
62#   b10++;
63#   fprintf(stderr, "expecting details -10 bytes lost, +10 bytes reachable\n"); fflush(stderr); breakme();
64up
65monitor leak_check full reachable changed
66continue
67#   VALGRIND_DO_CHANGED_LEAK_CHECK;
68#
69#   b32_33[0]--;
70#   fprintf(stderr, "expecting details 32 (+32) bytes lost, 33 (-32) bytes reachable\n"); fflush(stderr); breakme();
71up
72monitor leak_check full reachable changed
73# output all leak records:
74monitor leak_check full reachable any unlimited
75# output the 2 biggest leak records:
76monitor leak_check full reachable any limited 2
77#output the biggest leak record:
78monitor leak_check full reachable any limited 1
79# output the biggest definitely leaked record:
80monitor leak_check full definiteleak any limited 1
81continue
82#   VALGRIND_DO_CHANGED_LEAK_CHECK;
83#
84quit
85