debuging_c
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| debuging_c [2015/11/04 13:32] – [Google's tcmalloc heapprofiler] djbuldog | debuging_c [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 104: | Řádek 104: | ||
| ==== lsof ==== | ==== lsof ==== | ||
| * zobrazí file deskriptory (soubory, sockety, pipe), které má proces aktuálně otevřené | * zobrazí file deskriptory (soubory, sockety, pipe), které má proces aktuálně otevřené | ||
| + | * seznam obsahuje rovněž spuštěnou binárku a všechny knihovny | ||
| + | * dále zde lze zjistit pracovní adresář | ||
| + | * u souborů lze zjistit, jaký je aktuální seek | ||
| + | * příklad: | ||
| + | * pracovní adresář je / | ||
| + | * předchozí adresář je / | ||
| + | * binárka je /bin/bash | ||
| + | * stdin (0), stdout (1) i stderr (2) je navěšen na terminál /dev/pts0 | ||
| + | < | ||
| + | lsof -p 16901 | ||
| + | COMMAND | ||
| + | bash 16901 root cwd DIR 8,3 4096 464983 / | ||
| + | bash 16901 root rtd DIR 8,3 | ||
| + | bash 16901 root txt REG 8,3 | ||
| + | bash 16901 root mem REG 8,3 | ||
| + | .. | ||
| + | bash 16901 root 0u | ||
| + | bash 16901 root 1u | ||
| + | bash 16901 root 2u | ||
| + | </ | ||
| ==== strace ==== | ==== strace ==== | ||
| Řádek 111: | Řádek 131: | ||
| * Vypisuje vždy systémové volání s argumenty a návratovou hodnotou. Například u operace write je prvním argumentem file deskriptor. File deskriptory je pak možné dohledat přes lsof -p <pid> (fd 1 je typicky stdinout, fd2 je typicky stderr) | * Vypisuje vždy systémové volání s argumenty a návratovou hodnotou. Například u operace write je prvním argumentem file deskriptor. File deskriptory je pak možné dohledat přes lsof -p <pid> (fd 1 je typicky stdinout, fd2 je typicky stderr) | ||
| * výpis strace je zkrácený na 32 znaků, pokud je potřeba vidět víc, je třeba nastavit větší délku přes strace -s < | * výpis strace je zkrácený na 32 znaků, pokud je potřeba vidět víc, je třeba nastavit větší délku přes strace -s < | ||
| + | * užitečné volby | ||
| + | * -tt detailed timestamps | ||
| + | * -f also strace any child processes | ||
| + | * -v be very verbose, even with common structures | ||
| + | * -o write output to file | ||
| + | * -s N capture up to N characters of strings, rather than abbreviating with ... | ||
| ==== gdb ==== | ==== gdb ==== | ||
| Řádek 120: | Řádek 146: | ||
| ==== gcore ==== | ==== gcore ==== | ||
| * kompletní dump procesu včetně celé paměti, k pozdější analýze | * kompletní dump procesu včetně celé paměti, k pozdější analýze | ||
| + | * alternativně lze nastavit | ||
| + | * v environment přes '' | ||
| + | * globálně, pro uživatele, přes ''/ | ||
| ==== pmap ==== | ==== pmap ==== | ||
| * výpis alokované paměti | * výpis alokované paměti | ||
| Řádek 198: | Řádek 226: | ||
| * je žádoucí, aby binárka byla zkompilována s ladícími symboly (přepínač -g) | * je žádoucí, aby binárka byla zkompilována s ladícími symboly (přepínač -g) | ||
| * místo binárky lze použít i samotné debug symboly ze souboru binárka.debug | * místo binárky lze použít i samotné debug symboly ze souboru binárka.debug | ||
| + | |||
| + | * ukázka spuštění programu s profilováním paměti | ||
| + | |||
| + | < | ||
| + | $ HEAPPROFILE=/ | ||
| + | </ | ||
| + | |||
| * ukázka jednoduchého textového výpisu snaphostu | * ukázka jednoduchého textového výpisu snaphostu | ||
debuging_c.1446640324.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
