Debugging with Strace
"In an ideal world, whenever a program cannot perform a function it exits with a useful error message, giving you enough clues to fix the problem. Unfortunately, we do not live in an ideal world -- at least, not all the time. Sometimes when an application encounters an error, you are none the wiser." Read the article at DevChannel.org by Gerard Beekmans.