From 4e293a8696c3c5fa6fa2bdba39979f91d4c2e91b Mon Sep 17 00:00:00 2001 From: Jehan Date: Mon, 12 Feb 2018 01:50:19 +0100 Subject: [PATCH] libgimpbase: allow NULL prog_name in gimp_print_stack_trace(). The only debugger command which uses this value currently is gdb. And even there, it doesn't look mandatory. The alternative call using "-p" option does not require the program name. The manual doesn't say if calling with the program name has any advantage (but I don't see why it would, the PID is enough to find a process). Just in case, I leave the prog_name parameter (because it's easier to make a parameter useless than changing a libgimp* API) but simply allows setting it to NULL. --- libgimpbase/gimputils.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libgimpbase/gimputils.c b/libgimpbase/gimputils.c index ba2ddcbfa2..1f2356fd52 100644 --- a/libgimpbase/gimputils.c +++ b/libgimpbase/gimputils.c @@ -1084,10 +1084,10 @@ gimp_flags_value_get_abbrev (GFlagsClass *flags_class, * @trace: location to store a newly allocated string of the trace. * * Attempts to generate a stack trace at current code position in - * @prog_name. @prog_name is mostly a helper, but it has to be the - * program name of the current program. This function is not meant to - * generate stack trace for third-party programs, and will attach the - * current process id only. + * @prog_name. @prog_name is mostly a helper and can be set to NULL. + * Nevertheless if set, it has to be the current program name (argv[0]). + * This function is not meant to generate stack trace for third-party + * programs, and will attach the current process id only. * Internally, this function uses `gdb` or `lldb` if they are available, * or the stacktrace() API on platforms where it is available. It always * fails on Win32. @@ -1135,6 +1135,9 @@ gimp_print_stack_trace (const gchar *prog_name, gchar *args[7] = { "gdb", "-batch", "-ex", "backtrace full", (gchar *) prog_name, NULL, NULL }; + if (prog_name == NULL) + args[4] = "-p"; + args[5] = gimp_pid; /* Redirect the debugger output. */ @@ -1255,11 +1258,12 @@ gimp_print_stack_trace (const gchar *prog_name, } /** - * gimp_print_stack_trace: + * gimp_on_error_query: * @prog_name: the program to attach to. * * This is mostly the same as g_on_error_query() except that we use our * own backtrace function, much more complete. + * @prog_name must be the current program name (argv[0]). * It does nothing on Win32. * * Since: 2.10