Jump to: navigation, search


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:

# screen Xorg

On another terminal:

# DISPLAY=:0.0 matchbox-desktop
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.

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:

# DISPLAY=:0.0  matchbox-desktop      
matchbox-desktop: loading /usr/lib/matchbox/desktop/ with args ( None )
matchbox-desktop: loading /usr/lib/matchbox/desktop/ 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)