Ltrace

ltrace – narzędzie analizy kodu badające interakcję programu z używanymi przez niego bibliotekami dzielonymi (shared libraries). Narzędzie zostało stworzone przez hiszpańskiego programistę Juana Cespedesa stworzone pierwotnie na potrzeby dystrybucji Debian, używane również później w Ubuntu[1][2][3].

Funkcjonalność

Program pozwala prześledzić wykonanie konkretnego polecenia, w tym polecanie z konkretnymi parametrami, np. ltrace /bin/chmod 0777 xxx. Nie jest przy tym wymagana posiadanie źródeł oryginalnego programu, ponieważ używa ptrace, czyli funkcję do debugowana procesów wbudowaną w jądro Linuksa[4].

Przykład wykonania dla trywialnego programu /bin/true:

$ ltrace /bin/true
__libc_start_main(0x8048a50, 1, 0xbffff434, 0x80499f0, 0x8049a50 <unfinished ...>
setlocale(6, "")                                                                                 = "en_US.UTF-8"
bindtextdomain("coreutils", "/usr/share/locale")                                                 = "/usr/share/locale"
textdomain("coreutils")                                                                          = "coreutils"
__cxa_atexit(0x8048b60, 0, 0, 0xbffff434, 0x41152190)                                            = 0
exit(0 <unfinished ...>
__fpending(0x41149d20, 0x804b254, 0x41152190, 0xbffff3c0, 0xbffff378)                            = 0
+++ exited (status 0) +++

W przykładzie widać, że ltrace pokazuje nazwy funkcji, ich argumenty i wartości zwracane. Może również śledzić wywołania systemowe, rozpoznawać rozwidlenia procesów oraz dołączać się do procesów potomnych. Obsługuje m.in.[4]:

  • wyświetlanie argumentów i wartości zwrotnych funkcji;
  • pomiar czasu wykonania poszczególnych wywołań (-T);
  • liczenie wywołań (-c);
  • filtrowanie śledzonych symboli (-e, -x, -l).

Zobacz też

Przypisy

  1. Juan Cespedes, About Juan Céspedes [online], www.cespedes.org [dostęp 2025-03-23].
  2. ltrace(1) - Linux manual page [online], man7.org [dostęp 2025-03-23] (ang.).
  3. Ubuntu Manpage: ltrace - A library call tracer [online], manpages.ubuntu.com [dostęp 2025-03-23].
  4. 1 2 Rodrigo Rubira Branco, Ltrace Internals [online], Linux Symposium, 2007 [dostęp 2025-03-23] (ang.).

Bibliografia

  • Rodrigo Rubira Branco, Ltrace Internals [online], Linux Symposium, 2007 [dostęp 2025-03-23] (ang.).

Linki zewnętrzne