简体   繁体   中英

Valgrind won't return source lines!

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

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.

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, eg GDB know what symbol is at address 0x805F29A:

gdb prog_name
(gdb) info symbol 0x805F29A

For other readers with similar problem (i had the same but my compiler options where ok): It turns out that valgrind needs the path to the executable, if you dont give this then it will run ok but it won't give you the line numbers. In my case the executable was in a different directory, which was in my PATH, but to get the line information i had to run

valgrind --leak-check=full path_to_myprogram/myprogram

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM