Меня попросили реализовать инструмент (для linux), который помогает с управлением памятью программ на C / C ++. Основная цель - отследить утечки памяти, но я также проверяю наличие перекрывающихся аргументов в memcpy среди прочего.
Мне действительно нужны мои версии для перехвата всех вызовов этих функций (например, из других библиотек), поэтому мне действительно нужно их переопределить. Поэтому я не могу использовать трюк #define, предложенный во всех постах. Мой вопрос заключается в том, как найти исходное имя исходного файла, функцию, где был сделан вызов, и номер строки.
Моя единственная идея пока состоит в том, чтобы скомпилировать программу с отладочной информацией и начать копаться в объектном файле (ELF, поскольку я использую linux). Я никогда не играл с объектными файлами и знаю только основы ассемблера, так что это довольно трудоемкая задача.
Есть ли еще какой-нибудь более простой способ добиться этого? Если не кто-нибудь, кто работал над чем-то подобным, может помочь мне начать:)?.
Спасибо