Описание тега ltrace
Описание:
ltrace
это программа, которая просто выполняет указанную команду до ее завершения. Он перехватывает и записывает вызовы динамической библиотеки, которые вызываются исполняемым процессом, и сигналы, получаемые этим процессом. Он также может перехватывать и печатать системные вызовы, выполняемые программой.
Пакет:
ltrace
Применение:
Ознакомьтесь с полным списком опций и их использованием на странице руководства.
Открытие библиотеки прототипов:
Когда библиотека отображается в адресное пространство отслеживаемого процесса, ltrace
необходимо знать, какие прототипы функций, которые реализует эта библиотека. Для целейltrace
, прототип действительно немного больше, чем просто подпись типа: это также форматирование отдельных параметров и возвращаемого значения. Эти прототипы хранятся в файлах, называемых библиотеками прототипов.
После отображения библиотеки ltrace
узнает, что это SONAME
является. Затем он ищет файл с именемSONAME.conf
например, библиотека прототипов для libc.so.6
будет в файле с именем libc.so.6.conf
. Когда такой файл найден,ltrace
читает все хранящиеся в нем прототипы.
- Когда точка входа в таблицу символов (например, отмеченная
-x
), прототип ищется в библиотеке прототипов, соответствующей библиотеке, в которой произошло попадание. - Когда вызов библиотеки (например, отслеживаемый
-e
а также-l
), прототип ищется во всех библиотеках прототипов, загруженных для данного процесса. Это необходимо, поскольку вызов библиотеки отслеживается в таблице PLT вызывающей библиотеки, но прототип описывается в вызываемой библиотеке.
Если в библиотеке нет SONAME
, вместо него рассматривается базовое имя файла библиотеки. Для основного двоичного файла программы также учитывается базовое имя (например, библиотека прототипов для/bin/echo
будет называться echo.conf
).
Если имя, соответствующее soname (например, libc.so.6.conf), не найдено, а рассматриваемый модуль является совместно используемой библиотекой, ltrace также пробует частичные совпадения. ltrace
отсекает один период за другим, повторяя поиск, пока либо не будет найден протолиб, либо все, что останется, - это X.so. Таким образом, будет рассматриваться libc.so.conf, но не libc.conf.
При поиске библиотеки прототипов ltrace
потенциально просматривает несколько каталогов. В Linux это$XDG_CONFIG_HOME/ltrace
,
$HOME/.ltrace
, X/ltrace
для каждого X
в $XDG_CONFIG_DIRS
а также
/usr/share/ltrace
. Если переменная средыXDG_CONFIG_HOME
не определено, ltrace
смотрит в $HOME/.config/ltrace
вместо.
Также есть механизм загрузки устаревших файлов конфигурации. Если
$HOME/.ltrace.conf
существует, он импортируется в каждую загруженную библиотеку прототипов. Аналогично для/etc/ltrace.conf
. Если оба существуют, оба импортируются, и$HOME/.ltrace.conf
консультируется перед
/etc/ltrace.conf
.
Если -F
содержит любые каталоги, они ищутся в порядке приоритета по сравнению с указанными выше системными каталогами в том же порядке, в котором они упомянуты в -F
. Любые файлы, переданные в-F
импортируются аналогично предыдущим файлам конфигурации, указанным выше.
Ссылки:
- http://man7.org/linux/man-pages/man1/ltrace.1.html
- http://en.wikipedia.org/wiki/Ltrace
- http://linux.die.net/man/1/ltrace
man ltrace
на машине Linux.