DragonFly On-Line Manual Pages
LMDBG(1) LMDBG(1)
NAME
lmdbg - memory debugging tool
SYNOPSIS
lmdbg [OPTIONS] <prog> [args...]
DESCRIPTION
lmdbg runs an external program prog , collects run-time information and
saves it to a specified log file. More particulary, lmdbg is able of:
decoding all symbols in the source code (function names, file name and
position in the file); discovering all memory leaks ( -M default );
finding per-stacktrace memory leaks and ranking them from the largest
to the smallest ( -M leaks ); gathering (and ranking) various types of
per-stacktrace run time statistics, such as the highest memory
consumption ( -M peak ), the number of calls to memory allocation
functions ( -M allocs ) and the highest size of memory allocated by a
single invocation of malloc function ( -M max ). To accomplish the
above tasks, lmdbg , as a meta tool, manages a set of low level lmdbg-*
utilities, namely, lmdbg-run, lmdbg-leaks, lmdbg-sym, lmdbg-sysleaks,
lmdbg-sort and lmdbg-stat.
OPTIONS
-h Display the help message.
-V Display the lmdbg version.
-o filename
Specify the log file to save data to.
-M mode
Specify the task to do, mode is either of the following:
d or default
Show all stacktraces with memory leaks. This is the
default.
l or leaks
Rank stacktraces by memory leaks.
p or peak
Rank stacktraces by the peak memory consumption.
a or allocs
Rank stacktraces by the number of calls to memory
allocation functions.
m or max
Rank stacktraces by the highest amount of memory
allocated in a single invocation of malloc function.
-c filename
This option is passed to lmdbg-sysleaks(1).
-a This option is passed to lmdbg-sym(1).
-g This option is passed to lmdbg-sym(1).
-n This option is passed to lmdbg-run(1).
-T num This option is passed to lmdbg-run(1).
-B num This option is passed to lmdbg-run(1).
-v Enable verbose mode.
FILES
~/.lmdbg.conf or /usr/local/etc/lmdbg.conf
lmdbg configuration file
EXAMPLE
$ cat test3.c
#include <stdlib.h>
int main ()
{
int i;
void *p1, *p2;
p1 = malloc (900);
for (i=0; i < 3; ++i){
p2 = realloc (NULL, 10+300*i);
}
free (p1);
free (p2);
return 0;
}
$ cc -O0 -g -o test3 test3.c
$ lmdbg -o log ./test3; cat log
realloc ( NULL , 10 ) --> 0xbb901040 num: 2
lmdbg.c:140 log_stacktrace
lmdbg.c:545 realloc
test3.c:9 main
realloc ( NULL , 310 ) --> 0xbb912140 num: 3
lmdbg.c:140 log_stacktrace
lmdbg.c:545 realloc
test3.c:9 main
$ lmdbg -M leaks -o log ./test3; cat log
info progname ./test3
info stat total_allocs: 2
info stat total_free_cnt: 0
info stat total_leaks: 320
stacktrace peak: 320 max: 310 allocs: 2 leaks: 320
lmdbg.c:140 log_stacktrace
lmdbg.c:545 realloc
test3.c:9 main
$ lmdbg -M peak -o log ./test3; cat log
info progname ./test3
info stat total_allocs: 4
info stat total_free_cnt: 2
info stat total_leaks: 320
stacktrace peak: 930 max: 610 allocs: 3 leaks: 320
lmdbg.c:140 log_stacktrace
lmdbg.c:545 realloc
test3.c:9 main
stacktrace peak: 900 max: 900 allocs: 1
lmdbg.c:140 log_stacktrace
lmdbg.c:509 malloc
test3.c:7 main
$ lmdbg -M max -o log ./test3; cat log
info progname ./test3
info stat total_allocs: 4
info stat total_free_cnt: 2
info stat total_leaks: 320
stacktrace peak: 900 max: 900 allocs: 1
lmdbg.c:140 log_stacktrace
lmdbg.c:509 malloc
test3.c:7 main
stacktrace peak: 930 max: 610 allocs: 3 leaks: 320
lmdbg.c:140 log_stacktrace
lmdbg.c:545 realloc
test3.c:9 main
$ lmdbg -M allocs -o log ./test3; cat log
info progname ./test3
info stat total_allocs: 4
info stat total_free_cnt: 2
info stat total_leaks: 320
stacktrace peak: 930 max: 610 allocs: 3 leaks: 320
lmdbg.c:140 log_stacktrace
lmdbg.c:545 realloc
test3.c:9 main
stacktrace peak: 900 max: 900 allocs: 1
lmdbg.c:140 log_stacktrace
lmdbg.c:509 malloc
test3.c:7 main
$
SEE ALSO
lmdbg-run(1), lmdbg-sym(1), lmdbg-stat(1), lmdbg-sort(1),
lmdbg-grep(1), lmdbg-leaks(1), lmdbg-sysleaks(1), lmdbg-strip(1),
lmdbg-modules(1)
AUTHOR
Aleksey Cheusov <vle@gmx.net>
November 26, 2011 LMDBG(1)