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
- ↑ Juan Cespedes, About Juan Céspedes [online], www.cespedes.org [dostęp 2025-03-23].
- ↑ ltrace(1) - Linux manual page [online], man7.org [dostęp 2025-03-23] (ang.).
- ↑ Ubuntu Manpage: ltrace - A library call tracer [online], manpages.ubuntu.com [dostęp 2025-03-23].
- 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
- Oficjalna strona projektu (ang.)
- Kod źródłowy (ang.)
- Man: ltrace (ang.)