From 6f128d2947e902e44d3bc5628819df1b1ef42621 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Thu, 23 May 2024 15:43:38 +0200 Subject: [PATCH] Move valgrind and callgrind information to our wiki --- HACKING | 70 ++++----------------------------------------------------- 1 file changed, 4 insertions(+), 66 deletions(-) diff --git a/HACKING b/HACKING index 52bae0a1ac..5a1973d537 100644 --- a/HACKING +++ b/HACKING @@ -81,72 +81,10 @@ crashes. I haven't investigated whether this is because I should first have linked gnucash with -lefence or because a real problem in GnuCash code. -Using Valgrind with GnuCash ---------------------------- --- run ${prefix}/bin/gnucash-valgrind - -However, I did not find valgrind to be useful. It reported a bunch of -guile bugs, some g_hash_table bugs, and then the program exited prematurely -for no apparent reason. :-( - -For the moment, gnucash-valgrind uses the suppressions in -src/debug/valgrind/valgrind-*.supp - -For valgrind-gnucash.supp, this comment was made (but is perhaps outdated -by now ?): -This file needs to be cleaned up in two ways: - -1/ There are a bunch of duplicate suppressions in the file. - * The suppressions in place were auto-generated by valgrind itself - [--gen-suppressions=yes], and it makes no effort to output the - suppression only once. - -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 - -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. +Using Valgrind/Callgrind with GnuCash +------------------------------------- +This section has been moved to +https://wiki.gnucash.org/wiki/Coder_Tools Look up exported and imported symbols