Я пишу профилировщик памяти для C и для этого перехватываю вызовы для malloc, realloc и бесплатных функций через malloc_hooks. К сожалению, они устарели из-за их плохого поведения в многопоточных средах. Я не мог найти документ, описывающий альтернативное решение лучшей практики для достижения того же, может ли кто-нибудь просветить меня?
Я читал, что простой #define malloc(s) malloc_hook(s)
будет делать трюк, но это не работает с настройкой системы, о которой я помню, потому что он слишком навязчив исходной кодовой базе, подходящей для использования в профилировании/трассировочный инструмент. Чтобы вручную изменить исходный код приложения, это убийца для любого достойного профилировщика. Оптимально, решение, которое я ищу, должно быть включено или отключено, просто связываясь с дополнительной разделяемой библиотекой. Например, моя текущая настройка использует функцию, объявленную с помощью __attribute__ ((constructor))
, для установки перехватов перехватов malloc.
Спасибо