Инструмент для отслеживания вызовов библиотеки в Linux / ARM

8

Я ищу инструмент, который позволяет отслеживать вызовы функций в общих библиотеках в Linux / ARM. По сути, я хочу иметь возможность указать командную строку и позволить этому инструменту создать запись вызванных библиотечных функций и переданных аргументов. Я полагаю, что для этого можно использовать некоторую форму перехвата функций.

Я знаю ltrace, что обеспечивает именно ту функциональность, которая мне требуется. Тем ltraceне менее, не работает для меня, как это:

  • часто происходит сбой при трассировке более сложных программ.
  • очень медленно

Я ищу более надежную альтернативу. Скорость хороша, но не моя главная забота. Прежде всего, я хотел бы иметь средства отслеживания вызовов библиотеки, которые могут анализировать любую (не уклончивую) программу.

Sysdig также не работает в ARM, а порт dtrace все еще работает в бета-версии только в NetBSD.

Кто-нибудь знает о таком инструменте в работоспособном состоянии?

j0ker
источник

Ответы:

1

Вы смотрели на LTTng ? Это инфраструктура трассировки пространства ядра / пользователя, которая работает на нескольких архитектурах, включая ARM.

Вы можете настроить трассировку для кода пользовательского пространства с помощью LTTng-UST . Но вам придется перекомпилировать совместно используемые библиотеки, которые вы хотите отследить, с добавленными точками трассировки LTTng.

Вот руководство из официальных документов lttng по настройке трассировки пространства пользователя: Отслеживание вашего собственного пользовательского приложения.

Я не знаю, будет ли это полезно в вашем случае, но есть также поток переполнения стека при компиляции / установке lttng на встраиваемых платформах (включая ARM): как мне построить и развернуть LTTng во встроенной системе Linux?

Дж. Тейлор
источник