Strace

Introduction
Strace is generally used to trace the system calls. It is generally useful when a program doesn't start or behave correctly because of some missing files.

Real Use case
For instance we have matchbox-desktop from matchbox1 which goes in segmentation fault: On a terminal: On another terminal: Segmentation fault How do we resolve that? let's try strace: DISPLAY=:0.0 strace matchbox-desktop which displays a lot of output,I reproduced only the end of it here,which,in this case, is the interesting part. stat64("/home/root/.icons/mbup.png", 0xbec7c358) = -1 ENOENT (No such file or directory) stat64("/usr/share/pixmaps/mbup.png", 0xbec7c358) = -1 ENOENT (No such file or directory) stat64("mbup.png", 0xbec7c358)         = -1 ENOENT (No such file or directory) --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 2134 detached Here we can see that it lacks the mbup.png file,that makes it goes into segmentation fault.
 * 1) screen Xorg
 * 1) DISPLAY=:0.0 matchbox-desktop

Now how to resolve that? we simlpy have to look for the package providing mbup.png and install it This package is matchbox-common(a good idea would also be to make matchbox-desktop depend on matchbbox-common) After installing matchbox common,here's the result: matchbox-desktop: loading /usr/lib/matchbox/desktop/tasks.so with args ( None ) matchbox-desktop: loading /usr/lib/matchbox/desktop/dotdesktop.so with args ( None ) user_overides is (nil) mb-desktop-dotdesktop: failed to open /usr/local/share/applications mb-desktop-dotdesktop: failed to open /home/root/.applications It works! (some desktop appear on the screen)
 * 1) DISPLAY=:0.0  matchbox-desktop