Strace

Differences between revisions 2 and 3
Revision 2 as of 2006-05-01 21:47:48
Size: 885
Editor: ottawa-hs-64-26-167-206
Comment:
Revision 3 as of 2006-08-22 10:16:07
Size: 1642
Editor: p54A82627
Comment: Attaching to already running programs.
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:

= 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
}}}
 1. Find the process ID of <program>: {{{
pidof <program>
}}}
 1. Start strace with the process ID: {{{
strace -Ff -tt -p <PID> 2>&1 | tee strace-<program>.log
}}}
 1. Perform any actions necessary to reproduce the bug.
 1. You may have to hit Control-C to get strace to detach from a running program.
 1. Attach the complete output from strace, contained in strace-<program>.log, in your bug report.

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.

Generation

  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.

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.

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