Strace je velmi výkonný nástroj pro ladění příkazového řádku, který pomáhá řešit problémy sledováním systémových volání a signálů konkrétního programu. V případě, že nemáme k dispozici zdrojový kód, lze strace použít k analýze toho, jak program interaguje se systémem. V tomto článku probereme některé důležité strace příkazy pro odstraňování problémů a ladění programů a procesů v Linuxu.
Instalace
Instalace nástrojů strace utility je přímočarý a snadný proces. Pomocí následujícího příkazu nainstalujte aplikaci podle vaší distribuce Linuxu.
Debian/Ubuntu
$ sudo apt install strace
RedHat/CentOS
$ yum install strace
Ověřte instalaci spuštěním následujícího příkazu
$ strace -V
Výstup:
1.Trace systémových volání Linux Command pomocí strace
Strace je užitečný při sledování volání příkazového systému Linuxu. V tomto příkladu jednoduchý příkaz pwd se používá pro sledování.
$ strace pwd
Výstup:
2. Přesměrování protokolu trasování v souboru
Záznam trasování systémových volání lze přesměrovat do souboru pomocí příkazu strace jako:
$ strace -o pwd-log.txt pwd
Pomocí příkazu cat vyhledejte obsah souboru jako:
$ cat pwd-log.txt
3. Použijte strace k tisku souhrnu systémových volání namísto běžného výstupu.
Použití strace s volbou -c umožňuje vytisknout souhrn protokolu. V tomto příkladu je uveden souhrn linuxového příkazu pwd.
$ strace -c pwd
Výstup:
4. Sledujte konkrétní systémová volání pomocí strace
Příkaz Strace s volbou -e a typem sledování (čtení, zápis) lze použít ke sledování specifických systémových volání. V tomto příkladu je systémové volání write sledováno pro příkaz pwd.
$ strace -e trace=write pwd
Výstup:
5. Příkaz Strace pro tisk časového razítka každého systémového volání.
Příkaz Strace s volbou -r lze použít k vytištění všech relativních časových razítek každého systémového volání.
$ strace -r pwd
Výstup:
6. Trasování pomocí id procesu
Pokud v systému již běží nějaký proces, systémová volání lze sledovat pomocí příkazu strace s volbou -p spolu s ID procesu. V tomto příkladu je pro trasování použito id procesu nginx
Syntaxe
$ strace -p <process id>
$ strace -p 12842
Trasování lze zastavit stisknutím ctrl+c.
7. Příkaz Strace pro tisk výstupu ladění
Příkaz Strace s volbou -d lze použít k tisku výstupu ladění. V tomto příkladu je pro trasování použit jednoduchý linuxový příkaz pwd.
$ strace -d pwd
Výstup:
8. Příkaz Strace pro tisk času stráveného systémovými voláními.
Příkaz Strace s volbou -T udává čas strávený systémovými voláními jako:
$ strace -T pwd
Výstup:
9. Příkaz Strace pro tisk ukazatele instrukce
Příkaz Strace s volbou -i vytiskne ukazatel instrukce. V tomto příkladu je pro trasování použit jednoduchý linuxový příkaz pwd.
$ strace -i pwd
Výstup:
10. Příkaz Strace ke sledování systémových volání na základě konkrétní podmínky
Příkaz Strace lze použít ke sledování systémových volání na základě specifických podmínek, jako je paměť, proces, CPU atd. V tomto příkladu jsou systémová volání související se správou paměti trasována pro jednoduchý linuxový příkaz pwd.
$ strace -q -e paměť pwd
Výstup:
11. Příkaz Strace ke sledování systémových volání souvisejících se signálem
Systémová volání související se signálem lze sledovat definováním typu trasování v příkazu. V tomto příkladu nc -v -n localhost 80 se používá pro sledování systémových volání souvisejících se signálem.
$ strace -e trace=signal nc -v -n 127.0.0.1 80
Výstup:
Závěr
V tomto článku jsme se dozvěděli, co je nástroj strace a kdy jej lze použít. Také jsem pokryl některé důležité strace příkazy pro odstraňování problémů a ladění systémových volání a procesů.