From: dje@google.com (Doug Evans)
To: gdb-patches@sourceware.org, brobecker@adacore.com
Cc: marc.khouzam@ericsson.com
Subject: [RFA] restore "mt set python print-stack" for gdb 7.4
Date: Sat, 14 Jan 2012 04:06:00 -0000 [thread overview]
Message-ID: <20120114004152.083902461A8@ruffy.mtv.corp.google.com> (raw)
Hi.
Eclipse used this command. It's gone now from the current Eclipse sources,
but some releases exist that use it.
In order to not break things for users we're going to add this
command back for 7.4 (but keep it out of cvs head).
I've made this command properly interact with the new
"set python print-stack" parameter even though the new
version uses an enum.
Tested with Eclipse 3.7.1, verified Eclipse debugging sessions
now properly start.
Regression tested on amd64-linux.
Joel, ok to check into the branch?
2012-01-13 Doug Evans <dje@google.com>
Restore "mt set python print-stack on|off" for 7.4.
* NEWS: Update to indicate "mt set python print-stack" is deprecated,
but not deleted yet, and will be gone in gdb 7.5.
* python/python.c (maint_set_python_list, maint_show_python_list):
New global vars.
(maint_set_python, maint_show_python): New functions.
(gdbpy_should_print_stack_deprecated): New global var.
(set_maint_python_print_stack): New function.
(show_maint_python_print_stack): New function.
(_initialize_python): Define commands
"mt set python print-stack on|off" and ""mt show python print-stack".
Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.472.2.3
diff -u -p -r1.472.2.3 NEWS
--- NEWS 1 Jan 2012 21:47:08 -0000 1.472.2.3
+++ NEWS 14 Jan 2012 00:24:15 -0000
@@ -29,10 +29,11 @@
existing one.
** The "maint set python print-stack on|off" command has been
- removed. A new command: "set python print-stack
- none|full|message" has replaced it. Additionally, the default
- for "print-stack" is now "message", which just prints the error
- message without the stack trace.
+ deprecated and will be deleted in GDB 7.5.
+ A new command: "set python print-stack none|full|message" has
+ replaced it. Additionally, the default for "print-stack" is
+ now "message", which just prints the error message without
+ the stack trace.
** A prompt substitution hook (prompt_hook) is now available to the
Python API.
Index: python/python.c
===================================================================
RCS file: /cvs/src/src/gdb/python/python.c,v
retrieving revision 1.79.2.3
diff -u -p -r1.79.2.3 python.c
--- python/python.c 6 Jan 2012 04:43:41 -0000 1.79.2.3
+++ python/python.c 14 Jan 2012 00:24:15 -0000
@@ -1104,6 +1104,58 @@ gdbpy_breakpoint_has_py_cond (struct bre
#endif /* HAVE_PYTHON */
\f
+/* Support for "mt set python print-stack on|off" is present in gdb 7.4
+ to not break Eclipse.
+ ref: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367788. */
+
+/* Lists for 'maint set python' commands. */
+
+static struct cmd_list_element *maint_set_python_list;
+static struct cmd_list_element *maint_show_python_list;
+
+/* Function for use by 'maint set python' prefix command. */
+
+static void
+maint_set_python (char *args, int from_tty)
+{
+ help_list (maint_set_python_list, "maintenance set python ",
+ class_deprecated, gdb_stdout);
+}
+
+/* Function for use by 'maint show python' prefix command. */
+
+static void
+maint_show_python (char *args, int from_tty)
+{
+ cmd_show_list (maint_show_python_list, from_tty, "");
+}
+
+/* True if we should print the stack when catching a Python error,
+ false otherwise. */
+static int gdbpy_should_print_stack_deprecated = 0;
+
+static void
+set_maint_python_print_stack (char *args, int from_tty,
+ struct cmd_list_element *e)
+{
+ if (gdbpy_should_print_stack_deprecated)
+ gdbpy_should_print_stack = python_excp_full;
+ else
+ gdbpy_should_print_stack = python_excp_none;
+}
+
+static void
+show_maint_python_print_stack (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ fprintf_filtered (file,
+ _("The mode of Python stack printing on error is"
+ " \"%s\".\n"),
+ gdbpy_should_print_stack == python_excp_full
+ ? "on" : "off");
+}
+
+\f
/* Lists for 'set python' commands. */
@@ -1159,6 +1211,34 @@ This command is only a placeholder.")
#endif /* HAVE_PYTHON */
);
+ add_prefix_cmd ("python", no_class, maint_show_python,
+ _("Prefix command for python maintenance settings."),
+ &maint_show_python_list, "maintenance show python ", 0,
+ &maintenance_show_cmdlist);
+ add_prefix_cmd ("python", no_class, maint_set_python,
+ _("Prefix command for python maintenance settings."),
+ &maint_set_python_list, "maintenance set python ", 0,
+ &maintenance_set_cmdlist);
+
+ add_setshow_boolean_cmd ("print-stack", class_maintenance,
+ &gdbpy_should_print_stack_deprecated, _("\
+Enable or disable printing of Python stack dump on error."), _("\
+Show whether Python stack will be printed on error."), _("\
+Enables or disables printing of Python stack traces."),
+ set_maint_python_print_stack,
+ show_maint_python_print_stack,
+ &maint_set_python_list,
+ &maint_show_python_list);
+
+ /* Deprecate maint set/show python print-stack in favour of
+ non-maintenance alternatives. */
+ cmd_name = "print-stack";
+ cmd = lookup_cmd (&cmd_name, maint_set_python_list, "", -1, 0);
+ deprecate_cmd (cmd, "set python print-stack");
+ cmd_name = "print-stack"; /* Reset name. */
+ cmd = lookup_cmd (&cmd_name, maint_show_python_list, "", -1, 0);
+ deprecate_cmd (cmd, "show python print-stack");
+
/* Add set/show python print-stack. */
add_prefix_cmd ("python", no_class, user_show_python,
_("Prefix command for python preference settings."),
next reply other threads:[~2012-01-14 0:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-14 4:06 Doug Evans [this message]
2012-01-14 8:25 ` Joel Brobecker
2012-01-14 21:07 ` Doug Evans
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120114004152.083902461A8@ruffy.mtv.corp.google.com \
--to=dje@google.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=marc.khouzam@ericsson.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox