New tool lmdbg-head(1) was implemented, see the man page for
details.
README: recomendations for procfs
lmdbg-sym:
- Much simplier (and correct) method for address convertion was
implemented. As a result lmdbg-sym works correctly on AltLinux
where ASLR and PIE are enabled by default.
- Breakpoint are removed very soon after creation.
This saves a lot of memory consumed by gdb(1)
and dramatically speeds up it.
lmdbg-run:
- Arguments are passed correctly to progname
- On glibc-based systems (e.g. Linux) malloc hooks are not used
anymore as they are declared deprecated
- Addresses from lmdbg.c are not included to stacktrace
- Additional checks for address (returned by stacktrace(3))
correctness. As a result gdb(1) doesn't crash and therefore
lmdbg-sym(1) work correctly.
- stacktrace(3) doesn't not crash anymore on NetBSD/x64_64 with
system utilities. See implementation details in stacktrace.c.
- New option -N
- Option -v works correctly with non-zero exit status of progname.
- Exits with error if progname is not specified.
lmdbg-stat:
- Fix for NULL dereference appeared if free(3) or realloc(3)
stacktrace is seen without appropriate malloc(3) stacktrace.
AWK interpreter is found at configure time via MKC_REQUIRE_PROGS.
Build and regression tests were fixed for non-empty MAKEOBJDIR case.
ChangeLog file is never installed.
lmdbg-s2m and lmsbg-m2s was moved to libexec dir.
mk-configure >= 0.24.0 is required for build.
Fixes, improvements and additions in regression tests.
Fix in regression tests. Now "make test" exits with non-zero status
if something fails.
lmdbg-run:
- Zero addresses are removed from stacktraces generated by glibc's
backtrace(3). This fixes asserts in lmdbg-stat(1).
- Double "0x" in "info section" were fixed (seen on NetBSD).
- backtrace(3) from libexecinfo is used instead of builtin
implementation if the library and execinfo.h are available
(FreeBSD, NetBSD).
lmdbg-sym:
- Fixes. Sometimes addresses were converted to symbols
incorrectly. The problem was seen on modern Linux distros with
recent gdb(1).
lmdbg-stat:
- Now incompletly read lines (having no LF in the end) are
ignored. This fixes crashes and therefore empty output or
lmdbg(1) when analysed program is killed.
- Alternative implementation written in awk was removed.
Build infrastructure was converted to 2-level dirs.
This requires mk-configure>=0.23.0 for build.
Minor clean-ups in man pages and Makefiles.
libstacktrace:
Remove signal handlers and other garbage.
All we need is __builtin_frame_address and __builtin_return_address
builtins and nothing else.
Documentation files have been moved to subproject "doc".
Run "mkcmake install-doc" for installing it (or change SUBPRJ_DFLT).
Only backtrace(3) in libc is accepted as an external implementation
of stacktrace(3). This may fix build failure on FreeBSD with
installed libexeinfo.
Long options have been removed from all programs.
Use standard single-letter POSIX-compatible options.
lmdbg-sym:
- Doesn't accept progname as an argument anymore.
Use -P option instead.
- option --with-so was replaced with -s.
SORRY FOR INCOMPATIBILITIES WITH PREVIOUS RELEASES.
----------------------------------
lmdbg:
- -M option was added. lmdbg(1) is now a meta tools which is able
to not only collecting memory leaks. See the manual page for
details.
- -n option was added
- -T and -B options were added
- Regression tests were added for -M
A lot of improvements and grammar fixes in manual pages.
Thanks to Nikolai Krot for this.
lmdbg-stat, tests/test.sh:
- Fixes for Solaris
lmdbg-run:
- options -T and -B were added to lmdbg-run.
- option -n was added. It disables logging on startup.
Sending SIGUSR1 signal to the process enables it.
-f option was added, synonym for -p.
lmdbg-grep.1:
- documentation for "bytes" variable
If set, LMDBG_MODULES_AWK and LMDBG_STRIP_AWK environment variables
are used as a path to AWK interpreter by "lmdbg-modules" and
"lmdbg-strip" programs respectively.
More regression tests
of malloc/realloc/memalign/free etc. function calls. Unlike many
others, LMDBG does not provide any way to detect overruns of the
boundaries of malloc() memory allocations, as this is not the
goal. Like most other malloc debuggers, LMDBG allows detecting memory
leaks. Unlike some others LMDBG generates full stacktraces and
separates the logging process from analysis, thus allowing you to
analyze application on a per-module basis. Simple but powerful tools
for analisis are also provided.
lmdbg-run - Creates malloc/realloc/free/memalign/... logs
lmdbg-sym - Converts addresses to 'file.c:NUM func_name'
lmdbg-leak - Checks for memory leaks
lmdbg-stat - Gathers statistical information about memory allocations
lmdbg-grep - Greps the stackframes
lmdbg-strip - Strips the stackframes
lmdbg-module - Enrichs the stackframes with a module name
lmdbg-sort - Sorts the stackframes by e.g. total allocated bytes,
a number of memory allocations etc.
lmdbg-sysleaks - Filters out system memory leaks e.g. libc's