INSTALL: updated
mk-configure>=0.14.0 is needed to build lmdbg.
FIXED: 'make install' command installs test utilities from tests/
subdirectory. Thanks to Mikolaj Golub for bug report.
lmdbg-sym:
- LMDBG uses very tricky features of GDB. As a result GDB may
segfault on some platforms, e.g. gdb-6.4.90-debian fails on
Debian/Etch. In order to show users that GDB is buggy and needs
to be fixed, an exit status of it is checked. For this purpose
http://sf.net/projects/pipestatus/ is needed.
- LMDBG_GDB environment variable sets the path to gdb program
overiding path defined at build time. See scripts/Makefile.
For better efficiency lmdbg-multi2single and lmdbg-single2multi
internal scripts have been reimplemented in C and renamed to
lmdbg-m2s and lmdbg-s2m respectively.
Built-time AWK variable sets an AWK interpreter for awk script.
See scripts/Makefile.
ADDED: support for calloc(3) and posix_memalign(3).
Latest mk-configure is required for building.
A target for testing lmdbg is again "test"! :-)
Partial support for OpenBSD. Partial because I don't know how to
detect where shared lib's code begins, there are no /proc/$$/maps.
added: -a and -g options for "lmdbg" script.
cleanups:
- SHLIB_MAJOR/MINOR are used instead of dirty hacks.
"make test" is now friendly with MAKEOBJDIR
More regression tests.
Support for modern Linux/glibc where libraries are loaded
to different regions of the virtual memory
(See http://en.wikipedia.org/wiki/Address_space_layout_randomization).
To handle this lmdbg-run adds the special "info section" information
obtained from /proc/<pid>/maps available on NetBSD and Linux
to the log file, and lmdbg-sym uses this information.
fixed: enabling malloc logging in lmdbg-sym was an extreamly strange
idea. This was just an oversight. Now it is disabled.
***** A TARGET FOR TESTING LMDBG IS NOW "check", NOT "test"! *****
Additional regression test for lmdbg-sym and shared libraries.
WARNS=4 for libstacktrace library
WARNS=4 for liblmdbg library
Two internal helper scripts:
scripts/lmdbg-multi2single and scripts/lmdbg-single2multi.
Other minor improvements, clean-ups and fixes.
MAJOR CHANGES (since version 0.9.0):
Completely NEW build system based on NetBSD make (aka bmake),
mk-configure and pkgsrc's mk-files. It makes building LMDBG a bit
harder (user have to install new building tools, most probably from
sources :-( ) but makes the code *much* simplier and makes
development and supporting *drammatically* easier. See INSTALL file
for the installation instructions.
This release of LMDBG was sucessfully tested under the following
platforms: NetBSD-5.0/x86/gcc, NetBSD-4.0/x86/gcc,
Linux/glibc-2.3/x86/gcc, FreeBSD-6.2/x86/gcc and Solaris-10/x86/gcc.
NetBSD-2/alpha/gcc also partially works (unfortunately gcc's
__builtin_return_address and __builtin_frame_address return NULL
with non-zero arguments on NetBSD-2/alpha :-(, that is stacktrace
consists on single stack frame).
- Now all utilities have man pages.
- separation of libstacktrace library which is compatible (has a
similar API) with GNU libc's backtrace(3) but works just perfectly
under NetBSD, FreeBSD and Solaris.
- lmdbg-leak-check has been renamed to lmdbg.
- lmdbg-sysleaks:
- Two new keywords in config file: ignore_basefile, ignore_baseline.
- Support for shitty Solaris' /bin/sh.
- lmdbg-sym:
Fixes for -a mode. Now it outputs results in the same format as -g.
- lmdbg-run and lmdbg-sym:
LMDBG_ENV environment variable...
- LMDBG_LIBDYN variables has been renamed to LMDBG_LIB.
- tests/test.sh:
Diverse fixes for Solaris
- support for shitty shell :-/
- 0x vs sprintf('%p", ...)
- lmdbg.c:
fixed: log_enabled variable is set from gdb, so it must not be static.
fixed: lint(1) warnings.
- Both libstacktrace and liblmdbg libraries are built with '-O0 -g'
flags.
stacktrace.c + stacktrace.h = libstacktrace with API
compatible with GLIBC's backtrace(3).
See install.stacktrace Makefile's target.
Tested under NetBSD, FreeBSD, Solaris and Linux.
Code clean-ups
MAJOR CHANGES:
Completely new implementation of stacktrace function. Now it is my
own, portable to almost any hardware where gcc works. There is no
limit on i386 anymore. YAMD code was thrown out. GPL was thrown out
too. I prefer MIT license.
Documentation is now in README file. Read it! ;-)
Lots of regression tests was written. This release of LMDBG were
sucessfully tested under the following platforms:
NetBSD/x86/gcc
NetBSD/alpha/gcc
FreeBSD/x86/gcc
Linux/x86/gcc
Solaris/x86/gcc
lmdbg-sym:
added: -g option, synonym for --with-gdb.
-g becomes the default.
added: -a option for using addr2line(1) instead of gdb(1).
fix for Solaris (printf ("%p") doesn't output leading 0x).
lmdbg-run:
added: -p option, synonyms for --pipe.
malloc uses --> as a separator, not ->.
lmdbg-check ins splitted in two executables:
lmdbg-leaks - for normal memory leaks,
lmdbg-sysleaks - for memory leaks in system/external libraries.
See README file.
LMDBG - lightweight malloc debugger.
LMDBG logs the calls of malloc/realloc/free/memalign functions with their
stack frames and analyses such a logs.
lmdbg-run - for create malloc/realloc/free/memalign logs
lmdbg-sym - for converting address to 'file.c:NUM func_name'
lmdbg-leak - memory leaks checker