# connect gdb to Valgrind gdbserver: target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcleak echo vgdb launched process attached\n monitor v.set vgdb-error 999999 # # # insert break: break breakme # # continue till each break and execute via gdb the leak search as done in the C code. continue # # # fprintf(stderr, "expecting details 10 bytes reachable\n"); fflush(stderr); breakme(); up monitor leak_check full reachable any continue # VALGRIND_DO_LEAK_CHECK; # # fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); up monitor leak_check full reachable increased continue # VALGRIND_DO_ADDED_LEAK_CHECK; # # b10--; // lose b10 # b21 = malloc (21); # fprintf(stderr, "expecting details +10 bytes lost, +21 bytes reachable\n"); fflush(stderr); breakme(); up monitor leak_check full reachable increased continue # VALGRIND_DO_ADDED_LEAK_CHECK; # # for (i = 0; i < 2; i ++) # b32_33[i] = malloc (32+i); # fprintf(stderr, "expecting details +65 bytes reachable\n"); fflush(stderr); breakme(); up monitor leak_check full reachable increased continue # VALGRIND_DO_ADDED_LEAK_CHECK; # # fprintf(stderr, "expecting to have NO details\n"); fflush(stderr); breakme(); up monitor leak_check full reachable increased continue # VALGRIND_DO_ADDED_LEAK_CHECK; # # b10++; # fprintf(stderr, "expecting details +10 bytes reachable\n"); fflush(stderr); breakme(); up monitor leak_check full reachable increased continue # VALGRIND_DO_ADDED_LEAK_CHECK; # # b10--; # fprintf(stderr, "expecting details -10 bytes reachable, +10 bytes lost\n"); fflush(stderr); breakme(); up monitor leak_check full reachable changed continue # VALGRIND_DO_CHANGED_LEAK_CHECK; # # b10++; # fprintf(stderr, "expecting details -10 bytes lost, +10 bytes reachable\n"); fflush(stderr); breakme(); up monitor leak_check full reachable changed continue # VALGRIND_DO_CHANGED_LEAK_CHECK; # # b32_33[0]--; # fprintf(stderr, "expecting details 32 (+32) bytes lost, 33 (-32) bytes reachable\n"); fflush(stderr); breakme(); up monitor leak_check full reachable changed # output all leak records: monitor leak_check full reachable any unlimited # output the 2 biggest leak records: monitor leak_check full reachable any limited 2 #output the biggest leak record: monitor leak_check full reachable any limited 1 # output the biggest definitely leaked record: monitor leak_check full definiteleak any limited 1 continue # VALGRIND_DO_CHANGED_LEAK_CHECK; # quit