A collegue told me once that the last option when everything has failed to debug on linux was to use strace.
I tried to learn the science there is behind this strange tool but I am not a system admin guru and I Don't really get results.
So what is it exactly and what does it do ?
How to use it ? In which case ?
How to understand the output and process it ?
In brief, how does this stuff work ? In simple words.
n simple words, strace traces all system calls issued by a program along with their return codes. Think things such as file/socket operations and a lot more obscure ones.
It is most useful if you have some working knowledge of C since here system calls would more accurately stand for standard C library calls.
Let's say your program is /usr/local/bin/cough. Simply use:
All strace output will go to stderr (beware, the sheer volume of it often asks for a redirection to a file). In the simplest cases, your program will abort with an error and you'll be able to see what where its last interactions with the OS in strace output.