mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-21 16:38:06 -06:00
Integrate callgrind documentation into Hacking
This commit is contained in:
parent
cf7ff07624
commit
d8ac86afd7
44
HACKING
44
HACKING
@ -104,6 +104,50 @@ This file needs to be cleaned up in two ways:
|
||||
2/ There are a bunch of suppressions which need to not be suppressions, but
|
||||
instead just not be generated by valgrind.
|
||||
|
||||
Using Callgrind with GnuCash
|
||||
----------------------------
|
||||
In order to debug with callgrind, you need to add a couple of code
|
||||
fragments around the section of code you are profiling. This is
|
||||
easiest if you can find the function that invokes the routine(s) you
|
||||
want to profile, add the following code around the function call of
|
||||
interest.
|
||||
|
||||
Add the following to the start of the file:
|
||||
|
||||
#include <valgrind/callgrind.h>
|
||||
|
||||
Add the following to the start of the calling function:
|
||||
|
||||
static GTimeVal start, end;
|
||||
|
||||
Add the following just before the function of interest:
|
||||
|
||||
g_print("Start timing.\n");
|
||||
g_get_current_time(&start);
|
||||
CALLGRIND_START_INSTRUMENTATION();
|
||||
CALLGRIND_TOGGLE_COLLECT();
|
||||
|
||||
Add the following just after the function of interest:
|
||||
|
||||
CALLGRIND_TOGGLE_COLLECT();
|
||||
CALLGRIND_STOP_INSTRUMENTATION();
|
||||
g_get_current_time(&end);
|
||||
if (start.tv_usec > end.tv_usec) {
|
||||
end.tv_usec += 1000000;
|
||||
end.tv_sec -= 1;
|
||||
}
|
||||
g_print("Callgrind enabled for %d.%6d seconds.\n",
|
||||
(int)(end.tv_sec - start.tv_sec),
|
||||
(int)(end.tv_usec - start.tv_usec));
|
||||
|
||||
You will need to recompile, and then run the 'gnucash-valgrind'
|
||||
wrapper script instead of the normal 'gnucash' script.
|
||||
|
||||
NOTE: Version 3.2 of valgrind has changed the above macros to no
|
||||
longer take an argument. In order to compile with this version of
|
||||
valgrind you will need to remove the trailing parentheses and
|
||||
semicolon.
|
||||
|
||||
|
||||
Look up exported and imported symbols
|
||||
-------------------------------------
|
||||
|
@ -1,5 +1,4 @@
|
||||
set(doc_FILES
|
||||
callgrind.txt
|
||||
constderv.html
|
||||
doxygen.cfg.in
|
||||
doxygen_main_page.c
|
||||
|
@ -1,41 +0,0 @@
|
||||
In order to debug with callgrind, you need to add a couple of code
|
||||
fragments around the section of code you are profiling. This is
|
||||
easiest if you can find the function that invokes the routine(s) you
|
||||
want to profile, add the following code around the function call of
|
||||
interest.
|
||||
|
||||
Add the following to the start of the file:
|
||||
|
||||
#include <valgrind/callgrind.h>
|
||||
|
||||
Add the following to the start of the calling function:
|
||||
|
||||
static GTimeVal start, end;
|
||||
|
||||
Add the following just before the function of interest:
|
||||
|
||||
g_print("Start timing.\n");
|
||||
g_get_current_time(&start);
|
||||
CALLGRIND_START_INSTRUMENTATION();
|
||||
CALLGRIND_TOGGLE_COLLECT();
|
||||
|
||||
Add the following just after the function of interest:
|
||||
|
||||
CALLGRIND_TOGGLE_COLLECT();
|
||||
CALLGRIND_STOP_INSTRUMENTATION();
|
||||
g_get_current_time(&end);
|
||||
if (start.tv_usec > end.tv_usec) {
|
||||
end.tv_usec += 1000000;
|
||||
end.tv_sec -= 1;
|
||||
}
|
||||
g_print("Callgrind enabled for %d.%6d seconds.\n",
|
||||
(int)(end.tv_sec - start.tv_sec),
|
||||
(int)(end.tv_usec - start.tv_usec));
|
||||
|
||||
You will need to recompile, and then run the 'gnucash-valgrind'
|
||||
wrapper script instead of the normal 'gnucash' script.
|
||||
|
||||
NOTE: Version 3.2 of valgrind has changed the above macros to no
|
||||
longer take an argument. In order to compile with this version of
|
||||
valgrind you will need to remove the trailing parentheses and
|
||||
semicolon.
|
Loading…
Reference in New Issue
Block a user