2009-10-08 3 views
2

Valgrind сообщает мне, что функция xxx выделяет память, которая не была освобождена. Хорошо. Однако оказалось более трудным, чем обычно.Как я могу получить valgrind, чтобы сообщить мне адрес каждого незакрепленного блока памяти?

Для этого я создал многочисленные:

#ifdef DEBUG 
fprintf(stderr, "something happening:%lx\n", (unsigned long)ptr); 
#endif 

Так что я просто нужно, чтобы соответствовать этим PTR адреса, которые отображаются с адресами, не освобожденных памяти.

Как я могу получить valgrind, чтобы сообщить мне адрес каждого незакрепленного блока памяти?

ответ

1

Я не считаю, что проверка утечки Memcheck поддерживает адреса печати, к сожалению. Это связано с тем, что он хочет объединить несколько нераспределенных блоков в один «отчет о потерях», если они похожи.

Если вы не возражаете, что в Memcheck вы хотите, чтобы эта функция была добавлена ​​в memcheck/mc_leakcheck.c в источнике Valgrind. Я посмотрю на него, когда вернусь домой и разместим более подробное местоположение.

1

Благодаря Falaina для определения местоположения кода.

Для valgrind-3.2.3 место, которое сработало для меня, было в memcheck/mc_leakcheck.c, lc_scan_memory_WRK.

Добавлено после lc_markstack_push_WRK (addr, clique); on line # 472

if (clique! = -1) {VG_ (printf) ("clique% d:% p \ n", clique, ptr); }

+1

Это необходимо добавить к memcheck в качестве надлежащего варианта –

 Смежные вопросы

  • Нет связанных вопросов^_^