Question

I'm working on a GNU Autotools project where I'm encountering some strange memory allocation errors. I want to use Valgrind to debug, however when I run my executable under it I don't get any line numbers or source file names. I even tried configuring so that optimization is -O0 and with the -g flag for debugging by using the command:

./configure 'CXXFLAGS=-g -O0'

Then I'll run the executable under Valgrind as follows:

valgrind -leak-check=full ./[exename]

and I still only see mysterious outputs like:

==3493==    24 bytes in 1 blocks are definitely lost in loss record 137 of 303
==3493==    at 0x4A06409: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==3493==    by 0x46904A: xmalloc (in /usr/bin/bash)
Was it helpful?

Solution

What you really want is:

libtool --mode=execute valgrind --leak-check=full exename ...

OTHER TIPS

Complementing on ldav1s's answer, this is what I have on my .bashrc:

alias lgdb="libtool --mode=execute gdb"
alias lddd="libtool --mode=execute ddd"
alias lvalgrind="libtool --mode=execute valgrind"
alias lvalgrinddd="libtool --mode=execute valgrind --db-attach=yes --db-command=\"ddd %f %p\""

This way I don't have to type the rather long command line.

This is resolved by invoking the executable using libtool in "execute" mode as described by ldav1s and also in the manual here: libtool: Debugging-executables. Thanks for the insight ldav1s!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top