views:

46

answers:

3

I've tried running valgrind (memcheck and massif) on an app I wrote, but all I get back are addresses for the functions that executed.

---------------------------------
Context accounted for  0.6% of measured spacetime
  0x805F29A: (within prog_name)
  0x8141740: (within prog_name)

Called from:
   0.6% : 0x812E077: (within prog_name)

---------------------------------
Context accounted for  0.5% of measured spacetime
  0x805F29A: (within prog_name)
  0x81418FB: (within prog_name)

Called from:
   0.5% : 0x812E077: (within prog_name)

I compiled my app with the -g flag to put the debugging symbols in. Is there any other reason why valgrind wouldn't show the source line?

EDIT: valgrind version 3.2.1-Debian; g++ 4.3.1

A: 

I guess, you are not mentioning right flags, and going with default flags.

--show-reachable is one such flag which should be enabled, please look at other flags and enable them.

--Cheers

Koteswara sarma
+1  A: 

I discovered that I passed in both the -g and -ggdb flags to g++ at compile time. Omitting the -g flag caused this issue to go away.

sheepsimulator
A: 

There are a couple of possible reasons:

  • you may have inadvertently stripped your executable (most likely explanation),
  • you may be executing JITted code (though the address doesn't look like that's the case).

What does file prog_name say? If it says "stripped", that's a problem. You might also want to check whether other tools, e.g. GDB know what symbol is at address 0x805F29A:

gdb prog_name
(gdb) info symbol 0x805F29A
Employed Russian
I never got a stripped message. I don't know for sure, but I suspect mixing the '-g' and '-ggdb' flags messed it up.
sheepsimulator
@sheepsimulator You can suspect all you want, but if you want us to help you, please provide the info that we ask for: what *exactly* does 'file prog_name' say? what exactly does GDB 'info symbol' say?
Employed Russian
@Employed Russian - I appreciate your show of support, but this problem went away when I omitted the -g flag at compile time. I consider my question answered.
sheepsimulator