Here is list how to check for memory allocation problems (leaks, writing past buffer, etc.)
glibc based:
- mcheck(), mprobe() functions and MALLOC_CHECK_ env. variable (see 'man malloc' and http://www.gnu.org/s/libc/manual/html_node/Heap-Consistency-Checking.html)
- mtrace() function and 'mtrace' command http://www.gnu.org/s/libc/manual/html_node/Allocation-Debugging.html
- glibc-utils (mtrace, xtrace, memusage, ...)
gcc based:
- Mudflap Pointer Debugging http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
- GCC extensions: Bounds checking patches, ProPolice Stack-Smashing Protector
One thing is not clear here - there is option -fbounds-check which seems to compile in gcc (does it work?) and 'bounds checking patches' which gives -fbounds-checking option.
One and only:
- valgrind
Other free solutions:
- Electric fence http://directory.fsf.org/project/ElectricFence/
- DUMA library http://sourceforge.net/projects/duma/
- Memwatch http://www.linkdata.se/sourcecode/memwatch/
- halloc - not really a checker but useful http://directory.fsf.org/project/halloc/
Proprietary:
- Insure++
- Purify (IBM-Rational)
There is basic question - maybe design approach should be different e.g.:
- allocate memory on startup (pool)
- use sentry to check if tasks release objects allocated on pool
niedziela, 22 maja 2011
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz