LINUX.ORG.RU

how valgrind show malloc/alloc/free

 


0

1

Добрый день!

Подскажите, как в valgrind посмотреть где выделялась память и какого объема.
То есть, есть:
$ valgrind --tool=callgrind ./parser parser.input который генерирует call graph.

$valgrind --tool=memcheck --show-reachable=yes --track-fds=yes valgrind --tool=memcheck --leak-check=yes ./parser parser.input
В котором есть:
==9048== HEAP SUMMARY:
==9048== in use at exit: 984 bytes in 29 blocks
==9048== total heap usage: 31 allocs, 2 frees, 2,024 bytes allocated

Где есть информации о alloc-ации памяти, но она не полная.
Как можно использую valgrind что бы увидеть где и как
конкретно выделялась память, то есть может есть ключ к
callgrind - для получения этой информации.

Спасибо.

Ответ на: комментарий от gag

мне нужно что то типа:

main - address
....
malloc - address, buffer_address, buffer_size

То есть когда был вызван malloc в call graph - это есть в
callgrind, а так же где и какого обьема была выделенна память.

Есть такое в valgrind?

artin888
() автор топика
Ответ на: комментарий от artin888

Вообще-то...

strace такое умеет. Как-раз в режиме исполнения всё и покажет. strace -e какие, системные, вызовы, интересны -o файл_результатов.txt -p идентификатор_процесса stracer можно обработать любой код, вне зависимости от языка. Основная прелесть в том, что strace даже потенциально не может уронить код. Valgrind иногда такое делать умудряется.

Или memwatch. Это для С. Чисто для С.

Последний вариант это gdb.

mr_noone
()
Ответ на: комментарий от artin888

strace

Правда он покажет не маллоки, а то, что внутри, то есть mmap() и sbrk().

Ещё можно попробовать ltrace, там как раз должны быть маллоки.

DELIRIUM ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.