V tomto článku se naučíme Jak používat Linux Strace Command. Strace je výkonný nástroj příkazového řádku pro ladění a odstraňování problémů s programy v OS Linux. Zachycuje a zaznamenává všechna systémová volání uskutečněná procesem a signály přijaté procesem.
Zobrazuje název každého systémového volání spolu s jeho argumenty uzavřenými v závorkách a jeho návratovou hodnotou na standardní chybu; můžete jej také volitelně přesměrovat do souboru.
Normálně je strace k dispozici ve výchozím nastavení, pokud není přítomno ve vašem systému, nainstalujte strace pomocí následujícího příkazu:
dnf install strace
Můžete buď spustit příkaz se strace, nebo mu předat PID pomocí volby -p jako v následujících příkladech:
Sledování systémových volání příkazů Linux:
V tomto příkladu jednoduše spustíme příkaz „df -h“ následovaný strace pro sledování systémových volání příkazu df -h.
strace df -h
Výstup bude vypadat takto:
Z výše uvedeného výstupu můžete vidět různé typy systémových volání provedených příkazem df -h, například „open(“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) =3″
Kde,
- otevřené – je typ systémového volání
- (“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) – argument systémového volání
- 3 – návratová hodnota systémového volání
Trace PID procesu Linux:
Pokud proces již běží, můžete jej vysledovat jednoduše předáním jeho PID do strace; toto vyplní vaši obrazovku pokračujícím výstupem, který ukazuje systémová volání prováděná procesem, pro ukončení stiskněte CTRL + C.
strace -p 7302
Chcete-li získat souhrn celkového času, volání a chyb systémového volání, použijte příznak -c, jak je uvedeno níže;
strace -pc 7583
Tisk ukazatele pokynů během systémového volání:
Parametr -i zobrazuje ukazatel instrukce v době každého systémového volání provedeného programem.
strace -i df -h
Zobrazit čas každého výstupního řádku trasování:
Můžete také vytisknout aktuální čas pro každý řádek ve výstupu trasování předáním parametru -t.
strace -t df -h
Tisk času příkazu stráveného v systémových voláních:
Chcete-li zobrazit časový rozdíl mezi začátkem a koncem každého systémového volání provedeného programem, použijte volbu -T.
strace -T df -h
Sledování pouze specifických systémových volání:
V níže uvedeném příkazu je trace=write znám jako kvalifikační výraz, kde „trace“ je kvalifikátor (jiné zahrnují signál, zkratku, verbose, raw, read nebo write) a „write“ je hodnota kvalifikátoru.
Následující příkaz ve skutečnosti ukazuje systémová volání pro tisk výstupu df -h na standardní výstup.
strace -e trace=write df -h
Některé další příkazy o kvalifikátoru trasování jsou následující:
strace -e trace=open,close df -h
strace -e trace=open,close,read,write df -h
strace -e trace=all df -h
Sledování systémových volání na základě určité podmínky:
Uvidíme, jak sledovat systémová volání týkající se dané třídy událostí. Následující příkaz lze použít ke sledování všech systémových volání zahrnujících správu procesů.
strace -q -e trace=process df -h
Dále k trasování všech systémových volání, která berou jako argument název souboru, použijte následující příkaz:
strace -q -e trace=file df -h
Podobně můžete sledovat všechna systémová volání související se sítí, pamětí a signály pomocí následujících příkazů:
strace -q -e trace=memory df -h
strace -e trace=network df -h
strace -e trace=signal df -h
Přesměrovat výstup trasování do souboru:
Chcete-li zapsat trasovací zprávy odeslané na standardní chybu do souboru, použijte volbu -o. To znamená, že na obrazovce se vytiskne pouze výstup příkazu, jak je znázorněno níže.
strace -o strace_message.txt df -h
Všechna systémová volání byla zapsána v souboru strace_message.txt. Pro zobrazení systémových volání použijte příkaz cat.
cat strace_message.txt
Zobrazit výstup ladění Strace:
Chcete-li zobrazit informace o ladění nástroje strace, použijte parametr -d.
strace -d df -h
Závěrem lze říci, že strace je nástroj pro diagnostiku příčiny selhání programu. je to mocný nástroj pro ladění a odstraňování problémů. Je prakticky užitečný pro zkušené systémové administrátory, programátory a hackery.