A library call tracer
see also :
[-CfhiLrStttV] [-a column] [-A maxelts] [-D level] [-e
expr] [-l filename] [-n nr] [-o filename] [-p pid] ... [-s
strsize] [-u username] [-X extern] [-x extern] ...
[--align=column] [--debug=level] [--demangle] [--help]
[--indent=nr] [--library=filename] [--output=filename]
[--version] [command [arg ...]]
add an example, a script, a trick and tips
is a program that simply runs the specified command
until it exits. It intercepts and records the dynamic
library calls which are called by the executed process and
the signals which are received by that process. It can also
intercept and print the system calls executed by the
Its use is very
similar to strace(1).
Align return values in a
specific column (default column is 5/8 of screen width).
Maximum number of array
elements to print before suppressing the rest with an
Count time and calls for each library call and report a
summary on program exit.
Decode (demangle) low-level
symbol names into user-level names. Besides removing any
initial underscore prefix used by the system, this makes C++
function names readable.
Show debugging output of
ltrace itself. level must be a sum of some of
the following numbers:
DEBUG_GENERAL. Shows helpful progress information
DEBUG_EVENT. Shows every event received by a traced
DEBUG_PROCESS. Shows every action ltrace carries
upon a traced process
DEBUG_FUNCTION. Shows every entry to internal
A qualifying expression which
modifies which events to trace. The format of the expression
where the values are the functions to trace. Using an
exclamation mark negates the set of values. For example
-e printf means to trace only the printf
library call. By contrast, -e !printf means to
trace every library call except printf.
Note that some
shells use the exclamation point for history expansion; even
inside quoted arguments. If so, you must escape the
exclamation point with a backslash.
Trace child processes as they are created by currently
traced processes as a result of the fork(2) or clone(2)
system calls. The new process is attached immediately.
Load an alternate config file. Normally,
/etc/ltrace.conf and ~/.ltrace.conf will be read (the latter
only if it exists). Use this option to load the given file
or files instead of those two default files.
Show a summary of the options
to ltrace and exit.
Print the instruction pointer at the time of the library
Display only the symbols
included in the library filename. Up to 30 library
names can be specified with several instances of this
DON’T display library calls (use it with the
Indent trace output by
nr number of spaces for each new nested call. Using
this option makes the program flow visualization easy to
Write the trace output to the
file filename rather than to stderr.
Attach to the process with the process ID pid and
Print a relative timestamp with each line of the trace.
This records the time difference between the beginning of
Specify the maximum string size
to print (the default is 32).
Display system calls as well as library calls
Prefix each line of the trace with the time of day.
If given twice, the time printed will include the
If given thrice, the time printed will include the
microseconds and the leading portion will be printed as the
number of seconds since the epoch.
Show the time spent inside each call. This records the
time difference between the beginning and the end of each
Run command with the userid,
groupid and supplementary groups of username. This
option is only useful when running as root and enables the
correct execution of setuid and/or setgid binaries.
Some architectures need to know
where to set a breakpoint that will be hit after the dynamic
linker has run. If this flag is used, then the breakpoint is
set at extern, which must be an external function. By
default, ’_start’ is used. NOTE: this flag is
only available on the architectures that need it.
Trace the external function
extern. This option may be repeated.
Show the version number of
ltrace and exit.
System configuration file
Personal config file, overrides /etc/ltrace.conf
It has most of
the bugs stated in strace(1).
Manual page and
documentation are not very up-to-date.
sometimes fails to trace some children.
It only works
on Linux and in a small subset of architectures.
binaries are supported.
dlopen()ed libraries will not be traced.
If you would
like to report a bug, send a message to the mailing list
(ltrace-devel[:at:]lists.alioth.debian[:dot:]org), or use the
reportbug(1) program if you are under the Debian