Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LMDBG-RUN(1)							  LMDBG-RUN(1)

NAME
       lmdbg-run - runs	a program and traces the malloc/realloc/free calls

SYNOPSIS
       lmdbg-run [OPTIONS] _progname_ [args...]

DESCRIPTION
       lmdbg-run  lmdbg-run runs an external command progname args and creates
       a log file where	all invocations	of malloc, calloc, realloc,  memalign,
       posix_memalign and free are registered accompanied by the following in-
       formation: full stacktrace (addresses),	input  argument(s)  (requested
       size and/or address), result value (returned address, if	any) and ordi-
       nal number of function invocation.  Also, some special  information  is
       output  about  the  program  being  run.	 Before	being saved to the log
       file, stacktrace	info can be filtered through a custom command.

OPTIONS
       -h     Display the help message.

       -V     Display the lmdbg	version.

       -v     Enable verbose mode.

       -o filename
	      Specify the log file name.

       -f|-p command
	      Filter stacktraces through a filtering command/pipe.  The	result
	      is sent to the log file specified	in -o option or	to stdout oth-
	      erwise.

       -n     Do not enable logging on startup.	To  enable  it,	 send  SIGUSR1
	      signal to	the process.

       -N filename
	      Save pid of progname to filename.

       -T number
	      Specify  the  number  of	addresses  to skip from	the top	of the
	      stacktrace (farther from function	main).

       -B number
	      Specify the number of addresses to skip from the bottom  of  the
	      stacktrace (nearer to function main).

       -M number
	      Limit  the  number of addresses shown in a stacktrace. An	incom-
	      plete stacktrace may be generated, that includes the top of  the
	      stack.

EXAMPLE
       The output of lmdbg-run may look	like the following

	realloc	( 0xbb901800 , 777 ) --> 0xbb901c00
	 0xbbbe58e8
	 0xbbbe5a37
	 0x8048764
	 0x8048584
	 0x80484e7

       This   output  means  that  realloc  function  was  given  the  pointer
       0xbb901800 and 777 bytes	were requested.	As a result  realloc  returned
       the  address  0xbb901c00.   Addresses 0xbbbe58e8, 0xbbbe5a37 etc. are a
       part of the stacktrace.

EXAMPLE
       $ cat test2.c
       #include	<stdlib.h>

       int main	()
       {
	  void *p1 = NULL;
	  void *p2 = NULL;

	  p1 = malloc (555);
	  p2 = realloc (p2, 666);
	  p2 = realloc (p2, 777);
	  p2 = realloc (p2, 888);

	  return 0;
       }
       $ cc -O0	-g -o test2 test2.c
       $ lmdbg-run -o log ./test2
       $ cat log
       info section 0x0xbbace000 0x0xbbbc6000 /lib/libc.so.12.179
       info section 0x0xbbbdd000 0x0xbbbe1000 /usr/pkg/lib/liblmdbg.so.0.0
       info section 0x0xbbbee000 0x0xbbbfe000 /libexec/ld.elf_so
       info progname ./test2
       malloc (	555 ) --> 0xbb90a400 num: 1
	0xbbbddb7a
	0xbbbde53b
	0x8048769
	0x804863d
	0x8048678
       realloc ( NULL ,	666 ) --> 0xbb90a800 num: 2
	0xbbbddb7a
	0xbbbde68c
	0x8048781
	0x804863d
	0x8048678
       realloc ( 0xbb90a800 , 777 ) -->	0xbb90ac00 num:	3
	0xbbbddb7a
	0xbbbde68c
	0x8048799
	0x804863d
	0x8048678
       realloc ( 0xbb90ac00 , 888 ) -->	0xbb90a800 num:	4
	0xbbbddb7a
	0xbbbde68c
	0x80487b1
	0x804863d
	0x8048678
       $

EXAMPLE
       lmdbg-run -o log	./my_app &&
	 lmdbg-leaks log > log_leaks &&
	 lmdbg-sym ./my_app log_leaks >	log_leaks2 &&
	 lmdbg-sysleaks	-s log_leaks2 >	log_final
       lmdbg-run -B2 -M6 -f 'lmdbg-leaks | lmdbg-sym > log' ./my_app <args>

ENVIRONMENT
       LMDBG_LIB
	      Path to LD_PRELOAD'ed liblmdbg dynamic library. It  defaults  to
	      /usr/local/lib/liblmdbg.so

NOTES
       Full stacktrace allows analysing	an application on per-module basis. It
       helps determine what libraries and/or components	 require  more	memory
       than others and why. See	lmdbg-stat and lmdbg-sort.

BUGS
       The  current implementation of lmdbg-run	relies on several GCC's	exten-
       sions, namely, __builtin_return_address,	__builtin_frame_address, __at-
       tribute__((constructor))	 and __attribute__((destructor)). In my	knowl-
       edge, Besides GCC these extensions are also supported by	Intel  C  com-
       piler  and Clang. If you	know a solution	that works for other compilers
       let me now ;-)

SEE ALSO
       lmdbg(1), lmdbg-sym(1),	lmdbg-stat(1),	lmdbg-sort(1),	lmdbg-grep(1),
       lmdbg-head(1),	lmdbg-leaks(1),	  lmdbg-sysleaks(1),   lmdbg-strip(1),
       lmdbg-modules(1)

AUTHOR
       Aleksey Cheusov <vle@gmx.net>

				  Aug 4, 2013			  LMDBG-RUN(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | EXAMPLE | EXAMPLE | EXAMPLE | ENVIRONMENT | NOTES | BUGS | SEE ALSO | AUTHOR

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=lmdbg-run&sektion=1&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help