Strace

Debugging Central

This page is part of the debugging series — pages with debugging details for a variety of Ubuntu packages.

Sometimes, a program starts behaving errantly. It gives incorrect output on its input, it doesn't print anything at all, or even hangs. Under a Linux-based system, every userspace process has to interact with its environment through the kernel. And it does this by invoking system calls.

Strace is a utility that intercepts and logs these system calls. In this way, you can watch how a program interacts with the system, which is useful for tracking down behavioural issues.

Creating strace output

  1. Make sure strace is installed.

    apt-get install strace
  2. Start the program under control of strace:

    strace -Ff -tt <program> <arguments> 2>&1 | tee strace-<program>.log
  3. The program will start. Perform any actions necessary to reproduce the crash
  4. Attach the complete output from strace, contained in strace-<program>.log, in your bug report.

Using strace with already running programs

You may want to run strace on an already running program. This could be because strace logs too many things before you can reproduce a crash. Or, it could be because you are trying to find out what a program is doing in an infinite loop.

  1. Make sure strace is installed.

    apt-get install strace
  2. Find the process ID of <program>:

    pidof <program>
  3. Start strace with the process ID:

    strace -Ff -tt -p <PID> 2>&1 | tee strace-<program>.log
  4. Perform any actions necessary to reproduce the bug.
  5. You may have to hit Control-C to get strace to detach from a running program.
  6. Attach the complete output from strace, contained in strace-<program>.log, in your bug report.


CategoryDebugging CategoryBugSquad

Strace (last edited 2008-08-06 17:00:03 by localhost)