Пин не обнаруживает все динамические распределения - PullRequest
0 голосов
/ 08 февраля 2019

Я написал действительно простой Pin инструмент для вычисления количества динамически распределенных байтов в программе.Я дал инструмент GIMP с этим инструментом, и он сообщил 77 MB о выделениях.Я проделал тот же эксперимент с Valgrind, в котором сообщалось, что 117 MB.

Мой инструмент Pin аналогичен примеру Pin.Он ищет malloc(), calloc() и memalign() в каждом загруженном изображении и добавляет перед ними инструкции для расчета общего размера выделений.Как я могу решить проблему?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вам необходимо найти все следующие макросы:

#define MMAP    "mmap"
#define REALLOC "realloc"
#define CALLOC  "calloc"
#define MALLOC  "malloc"
#define SBRK    "sbrk"
#define FREE    "free"

Захватите вышеуказанные выделения и проверьте размер выделения.

0 голосов
/ 19 февраля 2019

Выполняется поиск malloc (), calloc () и memalign ()

Существуют другие функции выделения кучи, которые вы, возможно, не перехватывает и не учитывает: realloc и posix_memalign.

Вам также необходимо отслеживать все выделенные указатели и перехватывать free, в противном случае ваш счет может быть слишком высоким.

...