Отладка с помощью ltrace

Отладка с помощью ltrace

Отладка с помощью ltrace может помочь Вам, если вы являетесь разработчиком или системным администратором. В этой статье речь пойдет о том, в каких ситуациях Вам может помочь этот инструмент. Также рекомендую к прочтению статью об использовании strace.

Отладка с помощью ltrace

Отладка с помощью ltrace

Существуют два типа библиотек:

  • Статические — lib*.a файлы, которые подключаются к исполняемым файлам, а те, в свою очередь используют функции.
  • Динамические — это *.so файлы, которые не вставляются в исполняемые файлы. Исполняемые файлы могут подгружать такие библиотеки через ld.so или ld-linux.so.

В статье также будут упоминаться:

  1. ldconfig : создает необходимые ссылки и кэш (для использования диспетчером реального времени ld.so) для наиболее часто используемых разделенных библиотек,
    найденных в каталогах, указанных в командной строке, а также указанных в файле /etc/ld.so.conf и в системных каталогах (/usr/lib и /lib).
  2. ldd : показывает, какие библиотеки нужны для запуска.
  3. ltrace : трассировка библиотечных вызовов.
  4. ld.so/ld-linux.so: динамический линковщик / загрузчик.

Также, стоит обратить внимание на следующие файлы:

  1. /lib/ld-linux.so.* : исполняемые загрузчики / линковщики.
  2. /etc/ld.so.conf : файл содержит список пробелов, табуляций, разделителей и т.п. директорий, в которых нужно искать библиотеки.
  3. /etc/ld.so.cache : файл содержит список библиотек из /etc/ld.so.conf. Файл создается через ldconfig.
  4. lib*.so.version : библиотеки сохраняются в /lib, /usr/lib, /usr/lib64, /lib64, /usr/local/lib директориях.

На самом деле отладка с помощью ltrace не будет такой сложной, после того, как Вы разберетесь с основами.

Установка ltrace

Устанавливать будем из стандартного репозитория:

Начнем издалека, посмотрим текущий кэш библиотек:

Для того, чтобы обновить кэш, достаточно просто запустить ldconfig. Если будут найдены какие то проблемы, то ldconfig выведет их.

Далее рассмотрим утилиту ldd, которая показывает список библиотек, необходимых для запуска исполняемого файла.

Возьмем и выполним, например:

Теперь, список этих библиотек можно использовать, например, для создания chroot либо jail окружения. Кстати, если в результате каких бы то ни было манипуляций с библиотеками пошло что-то не так, то существует способ, с помощью которого мы можем восстановить работу приложения. Например, если приложение при запуске ругается на то, что ему не хватает библиотеки, можно на рабочем сервере или еще как то узнать до нее путь через ldd, затем скопировать по нужному пути, и далее выполнить ldconfig. Но данный способ — отчаянная мера и не рекомендуется к использованию тогда, когда есть другие варианты решения проблемы — например, переустановка софта.

Далее  о ldd.. Так можно посмотреть список нехватающих функций:

.. а так, объектов:

Соответственно тем или инным способом, можно понять поддерживает та или инная утилита нужные функции, например, можно проверить поддерживает ли она те или инные функции:

И, наконец, раз уж статья об отладке с помощью ltrace, то пора перейти и к самому ltrace 🙂

В качестве простейшего примера, приведем:

вывод команды писать не буду, так как он весьма объемный.

Для снятия трейса с процесса, можно использовать следующую команду:

Так можно трейсить определенные функции для приложения:

или так:

Вы можете сменить имена, функций, так как они зависят от языка программирования.

А так можно цепляться к процессу:

Я думаю теперь, отладка с помощью ltrace не кажется теперь чем-то потусторонним? 🙂

Следующая команда покажет зависимости:

Наверное стоит упомянуть и о переменных окружения.

Переменные окружения:

LD_LIBRARY_PATH может быть использован в качестве указания пути для поиска библиотек:

LD_PRELOAD позволяет указать дополнительные библиотеки, не включенные в исполняемом файл, которые будут загружены:

На этом хочу закончить краткую статью об отладка с помощью ltrace. Далее можно строить конвееры для отладки и использовать страницы из:

либо из хэлпа.

Summary
Article Name
Отладка с помощью ltrace
Description
Отладка с помощью ltrace может помочь Вам, если вы являетесь разработчиком или системным администратором. В этой статье речь пойдет о том, в каких ситуациях Вам может помочь этот инструмент. Также рекомендую к прочтению статью об использовании strace.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *