mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-28 00:16:15 +01:00
Merge branch 'on-error-stack' into 'main'
Small improvements to g_on_error_stack_trace and g_on_error_query See merge request GNOME/glib!4375
This commit is contained in:
commit
7868e6dd33
@ -157,20 +157,12 @@ g_on_error_query (const gchar *prg_name)
|
|||||||
|
|
||||||
retry:
|
retry:
|
||||||
|
|
||||||
if (prg_name)
|
_g_fprintf (stdout,
|
||||||
_g_fprintf (stdout,
|
"(process:%u): %s%s%s: ",
|
||||||
"%s (pid:%u): %s%s%s: ",
|
(guint) getpid (),
|
||||||
prg_name,
|
query1,
|
||||||
(guint) getpid (),
|
query2,
|
||||||
query1,
|
query3);
|
||||||
query2,
|
|
||||||
query3);
|
|
||||||
else
|
|
||||||
_g_fprintf (stdout,
|
|
||||||
"(process:%u): %s%s: ",
|
|
||||||
(guint) getpid (),
|
|
||||||
query1,
|
|
||||||
query3);
|
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
|
|
||||||
if (isatty(0) && isatty(1))
|
if (isatty(0) && isatty(1))
|
||||||
@ -189,8 +181,7 @@ g_on_error_query (const gchar *prg_name)
|
|||||||
else if ((buf[0] == 'P' || buf[0] == 'p')
|
else if ((buf[0] == 'P' || buf[0] == 'p')
|
||||||
&& buf[1] == '\n')
|
&& buf[1] == '\n')
|
||||||
return;
|
return;
|
||||||
else if (prg_name
|
else if ((buf[0] == 'S' || buf[0] == 's')
|
||||||
&& (buf[0] == 'S' || buf[0] == 's')
|
|
||||||
&& buf[1] == '\n')
|
&& buf[1] == '\n')
|
||||||
{
|
{
|
||||||
g_on_error_stack_trace (prg_name);
|
g_on_error_stack_trace (prg_name);
|
||||||
@ -237,8 +228,8 @@ g_on_error_query (const gchar *prg_name)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* g_on_error_stack_trace:
|
* g_on_error_stack_trace:
|
||||||
* @prg_name: the program name, needed by gdb for the "[S]tack trace"
|
* @prg_name: (nullable): the program name, needed by gdb for the
|
||||||
* option
|
* "[S]tack trace" option, or `NULL` to use a default string
|
||||||
*
|
*
|
||||||
* Invokes gdb, which attaches to the current process and shows a
|
* Invokes gdb, which attaches to the current process and shows a
|
||||||
* stack trace. Called by g_on_error_query() when the "[S]tack trace"
|
* stack trace. Called by g_on_error_query() when the "[S]tack trace"
|
||||||
@ -260,13 +251,17 @@ g_on_error_stack_trace (const gchar *prg_name)
|
|||||||
#if defined(G_OS_UNIX)
|
#if defined(G_OS_UNIX)
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
gchar buf[16];
|
gchar buf[16];
|
||||||
|
gchar buf2[64];
|
||||||
const gchar *args[5] = { DEBUGGER, NULL, NULL, NULL, NULL };
|
const gchar *args[5] = { DEBUGGER, NULL, NULL, NULL, NULL };
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (!prg_name)
|
if (!prg_name)
|
||||||
return;
|
{
|
||||||
|
_g_snprintf (buf2, sizeof (buf2), "/proc/%u/exe", (guint) getpid ());
|
||||||
|
prg_name = buf2;
|
||||||
|
}
|
||||||
|
|
||||||
_g_sprintf (buf, "%u", (guint) getpid ());
|
_g_snprintf (buf, sizeof (buf), "%u", (guint) getpid ());
|
||||||
|
|
||||||
#ifdef USE_LLDB
|
#ifdef USE_LLDB
|
||||||
args[1] = prg_name;
|
args[1] = prg_name;
|
||||||
@ -449,8 +444,10 @@ stack_trace (const char * const *args)
|
|||||||
checked_write (in_fd[1], "quit\n", 5);
|
checked_write (in_fd[1], "quit\n", 5);
|
||||||
#else
|
#else
|
||||||
/* Don't wrap so that lines are not truncated */
|
/* Don't wrap so that lines are not truncated */
|
||||||
checked_write (in_fd[1], "set width unlimited\n", 20);
|
checked_write (in_fd[1], "set width 0\n", 12);
|
||||||
checked_write (in_fd[1], "backtrace\n", 10);
|
checked_write (in_fd[1], "set height 0\n", 13);
|
||||||
|
checked_write (in_fd[1], "set pagination no\n", 18);
|
||||||
|
checked_write (in_fd[1], "thread apply all backtrace\n", 27);
|
||||||
checked_write (in_fd[1], "p x = 0\n", 8);
|
checked_write (in_fd[1], "p x = 0\n", 8);
|
||||||
checked_write (in_fd[1], "quit\n", 5);
|
checked_write (in_fd[1], "quit\n", 5);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user