Я хотел бы регистрировать все обращения к файлам, которые процесс делает за это время жизни эффективным образом.
В настоящее время мы делаем это, используя LD_PRELOAD, предварительно загружая общую библиотеку, которая перехватывает вызовы библиотеки C, которые имеют дело с доступом к файлам. Этот метод эффективен без значительных издержек, но не является доказательством утечки.
Например, в общей библиотеке LD_PRELOAD у нас есть крючок для dlopen. Этот крючок используется для отслеживания доступа к общим библиотекам, но механизм не регистрирует третичные зависимости общей библиотеки.
Мы попытались использовать strace, но накладные расходы на использование strace были для нас не стартером. Мне было любопытно, есть ли у нас другие механизмы, которые мы можем исследовать, чтобы перехватывать обращения к файлам, что процесс и его подпроцессы работают эффективно. Я открыт для изучения вариантов на уровне ядра, перехватывает уровень VFS или что-то еще.
Мысли?