Linux – Friheden til systemadministration: Version 2.8.20060113 – 2021-01-07 | ||
---|---|---|
forrige | Kapitel 3. Filsystemer | næste |
Nogle gange er programmer ret dårlige til at forklare, hvorfor det gik galt. Kommandoen strace er god til at fejlsøge med. Det gælder specielt ved fejl som:
Segmentation fault (core dumped)
File not found
Access denied
Her vil strace ofte kunne give dig en idé om, hvad der skete lige inden fejlen indtrådte, og med lidt held kan du ud af dette gætte, hvad der gik galt. Måske mangler du en fil eller måske bruger programmet den forkerte version af et library.
strace står for system trace og viser alle de kald, der er til library-rutiner. Hvis man vil se, hvilke kald ls laver, så skriver man:
[tyge@hven ~]$ strace ls
Det går hurtigt op for een, at der kommer ret meget output. Da problemerne ofte er fil-relateret, så kan man nøjes med at få vist de fil-relaterede systemkald:
[tyge@hven ~]$ strace -e trace=file ls
Hvis programmet starter andre processer (f.eks. ved at kalde andre programmer), så kan man strace disse med '-ff'. Prøv at se forskellen på disse to:
[tyge@hven ~]$ strace time ls [tyge@hven ~]$ strace -ff time ls
Hvis du strace'r programmer, der kører under X, så vil du ofte få utroligt meget output. Du kan proppe det i en fil ved at redirigere stderr:
[tyge@hven ~]$ strace -ff time ls 2>/tmp/fil
En anden mulighed er at starte strace fra en shell i emacs:
[tyge@hven ~]$ emacs M-x shell [tyge@hven ~]$ strace ...
Herved får du mulighed for at bladre i outputtet med det samme.