Реализация инструмента, который отслеживает ошибки памяти C, находит, откуда вызывается мой переопределенный malloc и т. Д. - PullRequest
1 голос
/ 07 февраля 2011

Меня попросили реализовать инструмент (для linux), который помогает с управлением памятью программ на C / C ++. Основная цель - отследить утечки памяти, но я также проверяю наличие перекрывающихся аргументов в memcpy среди прочего.

Мне действительно нужны мои версии для перехвата всех вызовов этих функций (например, из других библиотек), поэтому мне действительно нужно их переопределить. Поэтому я не могу использовать трюк #define, предложенный во всех постах. Мой вопрос заключается в том, как найти исходное имя исходного файла, функцию, где был сделан вызов, и номер строки.

Моя единственная идея пока состоит в том, чтобы скомпилировать программу с отладочной информацией и начать копаться в объектном файле (ELF, поскольку я использую linux). Я никогда не играл с объектными файлами и знаю только основы ассемблера, так что это довольно трудоемкая задача.

Есть ли еще какой-нибудь более простой способ добиться этого? Если не кто-нибудь, кто работал над чем-то подобным, может помочь мне начать:)?.

Спасибо

1 Ответ

2 голосов
/ 07 февраля 2011

Поскольку вы работаете в Linux, вы можете использовать поддержку glibc malloc hook. Рабочий пример также приведен на этой странице.

...