mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-27 11:20:27 -06:00
83d14e1c1c
It is split into - /libgnucash (for the non-gui bits) - /gnucash (for the gui) - /common (misc source files used by both) - /bindings (currently only holds python bindings) This is the first step in restructuring the code. It will need much more fine tuning later on.
42 lines
1.3 KiB
Plaintext
42 lines
1.3 KiB
Plaintext
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.
|