| Maybe you can do it with a shell-script wrapper? Eg:
|
| run-me.sh:
| #! /bin/sh
| LD_PRELOAD=./libfakec.so ./myapp -e
|
| Then run:
|
| valgrind --trace-children=yes ./run-me.sh

This has been my approach.  Now I am suspicious that  - -trace-children=yes is 
not working like I hoped.  I get the EXACT SAME output whether I have  - 
-trace–children=yes or do not have that option.  So I think there must be more 
to getting  - -trace-children=yes to behave like I want.

Here is the output.  Every number is the same whether or not I have "- 
-trace-children=yes".

==13527== HEAP SUMMARY:
==13527==     in use at exit: 19,116 bytes in 584 blocks
==13527==   total heap usage: 766 allocs, 182 frees, 29,553 bytes allocated
==13527==
==13527== LEAK SUMMARY:
==13527==    definitely lost: 0 bytes in 0 blocks
==13527==    indirectly lost: 0 bytes in 0 blocks
==13527==      possibly lost: 0 bytes in 0 blocks
==13527==    still reachable: 19,116 bytes in 584 blocks
==13527==         suppressed: 0 bytes in 0 blocks



From: Mike Shal <mar...@gmail.com<mailto:mar...@gmail.com>>
Date: Tue, Jan 14 9:29 AM
To: Samuel Quiring 
<samuel_quir...@symantec.com<mailto:samuel_quir...@symantec.com>>
Cc: 
"valgrind-users@lists.sourceforge.net<mailto:valgrind-users@lists.sourceforge.net>"
 
<valgrind-users@lists.sourceforge.net<mailto:valgrind-users@lists.sourceforge.net>>
Subject: Re: [Valgrind-users] valgrind with LD_PRELOAD

On Tue, Jan 14, 2014 at 10:14 AM, Samuel Quiring 
<samuel_quir...@symantec.com<mailto:samuel_quir...@symantec.com>> wrote:
Greetings,

I invoke my program as follows:

     LD_PRELOAD=./libfakec.so ./my_app –e

The LD_PRELOAD environment variable tells the loader that libfakec.so should be 
loaded BEFORE every other library including the C runtime, libc.so (see 
http://stackoverflow.com/questions/426230/what-is-the-ld-preload-trick, for 
example).  I am substituting some of my own routines for standard library 
calls.  My app is working like I want, but the question is how to run the app 
under valgrind?  I tried this:

    valgrind LD_PRELOAD=./libfakec.so ./my_app –e

But valgrind gave and error saying that "LD_PRELOAD=./libfakec.so ./my_app –e" 
is not a valid path.  In theory, I could put the LD_PRELOAD before the valgrind 
invocation:

    LD_PRELOAD=./libfakec.so  valgrind  ./my_app –e

But then valgrind would also be using my special library routines and I am 
pretty sure that will not work.


Maybe you can do it with a shell-script wrapper? Eg:

run-me.sh:
#! /bin/sh
LD_PRELOAD=./libfakec.so ./myapp -e

Then run:

valgrind --trace-children=yes ./run-me.sh

-Mike
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to