Интерпретация вывода Valgrind trace-malloc

Valgrind - отличный отладчик памяти, и у него есть опция - trace-malloc = yes , которая производит что-то вроде этого:

--16301-- malloc(8) = 0x4EAD748
--16301-- free(0x4EAD748)
--16301-- free(0x4EAD498)
--16301-- malloc(21) = 0x4EAD780
--16301-- malloc(8) = 0x4EAD838
--16301-- free(0x4EAD6F8)
--16301-- calloc(1,88) = 0x4EAD870
--16301-- realloc(0x0,160)malloc(160) = 0x4EB1CF8
--16301-- realloc(0x4EB9F28,4) = 0x4EBA060

Есть ли там инструмент, который анализирует этот вывод и сообщает мне для каждого адреса, правильно ли он выделен и освобожден в соответствующей паре?

GCC имеет нечто подобное с функцией mtrace () и mtrace инструмент командной строки, но формат отличается.

Дополнительный вопрос: можно ли вывести фактический адрес рядом с утверждением «определенно потеряно»?

(Я помечу это «C» и «C ++» для двух языков, которые, скорее всего, будут использоваться с Valgrind.)

10
задан Kerrek SB 5 January 2012 в 23:50
поделиться