Do not print anything when self-backtrace unavailable
Right now, gdb's self-backtrace feature will still print something when a backtrace is unavailable: sig_write (_("----- Backtrace -----\n")); [...] sig_write (_("Backtrace unavailable\n")); sig_write ("---------------------\n"); However, if GDB_PRINT_INTERNAL_BACKTRACE is undefined, it seems better to me to print nothing at all. This patch implements this change. It also makes a couple of other small changes in this same module: it adds a header guard to bt-utils.h, and it protects the definitions of gdb_internal_backtrace_1 with a check of GDB_PRINT_INTERNAL_BACKTRACE.
This commit is contained in:
parent
93f3b8eeaa
commit
ffcc2b69d1
2 changed files with 11 additions and 2 deletions
|
@ -41,6 +41,7 @@ gdb_internal_backtrace_set_cmd (const char *args, int from_tty,
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE_USING_LIBBACKTRACE
|
||||
|
||||
/* Callback used by libbacktrace if it encounters an error. */
|
||||
|
@ -142,7 +143,10 @@ gdb_internal_backtrace_1 ()
|
|||
sig_write (_("Backtrace might be incomplete.\n"));
|
||||
}
|
||||
|
||||
#else
|
||||
#error "unexpected internal backtrace policy"
|
||||
#endif
|
||||
#endif /* GDB_PRINT_INTERNAL_BACKTRACE */
|
||||
|
||||
/* See bt-utils.h. */
|
||||
|
||||
|
@ -152,6 +156,7 @@ gdb_internal_backtrace ()
|
|||
if (current_ui == nullptr)
|
||||
return;
|
||||
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE
|
||||
const auto sig_write = [] (const char *msg) -> void
|
||||
{
|
||||
gdb_stderr->write_async_safe (msg, strlen (msg));
|
||||
|
@ -159,12 +164,11 @@ gdb_internal_backtrace ()
|
|||
|
||||
sig_write (_("----- Backtrace -----\n"));
|
||||
|
||||
#ifdef GDB_PRINT_INTERNAL_BACKTRACE
|
||||
if (gdb_stderr->fd () > -1)
|
||||
gdb_internal_backtrace_1 ();
|
||||
else
|
||||
#endif
|
||||
sig_write (_("Backtrace unavailable\n"));
|
||||
|
||||
sig_write ("---------------------\n");
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
/* Support for printing a backtrace when GDB hits an error. This is not
|
||||
for printing backtraces of the inferior, but backtraces of GDB itself. */
|
||||
|
||||
#ifndef BT_UTILS_H
|
||||
#define BT_UTILS_H
|
||||
|
||||
#ifdef HAVE_LIBBACKTRACE
|
||||
# include "backtrace.h"
|
||||
# include "backtrace-supported.h"
|
||||
|
@ -67,3 +70,5 @@ extern void gdb_internal_backtrace ();
|
|||
|
||||
extern void gdb_internal_backtrace_set_cmd (const char *args, int from_tty,
|
||||
cmd_list_element *c);
|
||||
|
||||
#endif /* BT_UTILS_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue