|
From: Felix S. <fel...@we...> - 2008-12-08 14:54:50
|
Dear, I have a tricky question. My client program does a client request. The function-like macro (flm), it is called VALGRIND_FUNCTION, takes two parameters. In the definition of the flm the function VALGRIND_DO_CLIENT_REQUEST is called. The two parameters of the client request flm will be forwarded to the tool plugin VALGRIND_DO_CLIENT_REQUEST(return, 0, VQ__USERREQ_FUNCTION, param1, param2, 0, 0, 0); my tool plugin instruments all load and store operations and increments a counter structure. After execution I recognized the client request takes arround 4 load operations. This circumstance falsifies my result. how can i exclude client requests from the instrumentation process? thanks for answering fs |
|
From: Nicholas N. <nj...@cs...> - 2008-12-08 22:23:34
|
On Mon, 8 Dec 2008, Felix Schmidt wrote: > I have a tricky question. My client program does a client request. The > function-like macro (flm), it is called VALGRIND_FUNCTION, takes two > parameters. > In the definition of the flm the function VALGRIND_DO_CLIENT_REQUEST is > called. The two parameters of the client request flm will be forwarded > to the > tool plugin VALGRIND_DO_CLIENT_REQUEST(return, 0, VQ__USERREQ_FUNCTION, > param1, param2, 0, 0, 0); > > my tool plugin instruments all load and store operations and increments > a counter structure. After execution I recognized the client request > takes arround 4 load operations. > This circumstance falsifies my result. > > how can i exclude client requests from the instrumentation process? I don't think you can. At best, once inside the client request you should say "ok, undo those last four load operations". As for "falsifying your result" -- unless you are calling the client request very frequently, the number of additional loads should be very small compared to the total number done by the program. If such a small perturbation matters, I would be concerned that all the other things Valgrind does differently to native execution (eg. different memory layout) would also "falsify your result". It might be useful to explain what your "result" is and how you are trying to obtain it? Nick |