This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Version 2 of patch to add 'maint profile-gdb' command
- To: Eli Zaretskii <eliz at is dot elta dot co dot il>
- Subject: Re: [RFA] Version 2 of patch to add 'maint profile-gdb' command
- From: Andrew Cagney <ac131313 at cygnus dot com>
- Date: Sat, 22 Sep 2001 19:08:50 -0400
- Cc: Kevin Buettner <kevinb at cygnus dot com>,Fernando Nasser <fnasser at cygnus dot com>, jason-swarelist at molenda dot com,gdb-patches at sources dot redhat dot com, tromey at cygnus dot com
- References: <Pine.SUN.3.91.1010920101719.3922A-100000@is>
> On Wed, 19 Sep 2001, Kevin Buettner wrote:
>
>
>> I like having the maintenance commands all lumped under "maint". That
>> way I can use tab completion to see all of the maintenance related commands
>> when I do
>>
>> (gdb) maint <TAB>
>>
>> I think a set/show would be useful for some activities; couldn't
>> we add "maint set ..." and "maint show ..." ?
>
>
> That seems to be a good idea, IMHO.
Turns out there is already a ``maint info'' so a ``maint set/show''
makes good sense. Try the attached.
Jason, I think it is pretty clear where to add the profiling bit :-)
Eli, if the doco entry is going in gdb.texinfo, can you suggest where?
Fernando, is this part ok?
Andrew
2001-09-22 Andrew Cagney <ac131313@redhat.com>
* maint.c (maintenance_set_cmdlist, maintenance_show_cmdlist): New
variables.
(maintenance_set_profile_cmd): New function.
(maintenance_show_cmd, maintenance_set_cmd): New functions.
(_initialize_maint_cmds): Add "maintenance set" and "maintenance
show" and dummy "maintenance set/show profile" commands.
Index: testsuite/ChangeLog
2001-09-22 Andrew Cagney <ac131313@redhat.com>
* gdb.base/maint.exp: Add "maintenance set/show" to list of valid
responses from "help maint".
Index: maint.c
===================================================================
RCS file: /cvs/src/src/gdb/maint.c,v
retrieving revision 1.15
diff -p -r1.15 maint.c
*** maint.c 2001/04/11 01:01:04 1.15
--- maint.c 2001/09/22 22:47:58
*************** maintenance_do_deprecate (char *text, in
*** 471,480 ****
--- 471,510 ----
}
}
+ /* Maintenance set/show framework. */
+ static struct cmd_list_element *maintenance_set_cmdlist;
+ static struct cmd_list_element *maintenance_show_cmdlist;
+
+ static void
+ maintenance_set_cmd (char *args, int from_tty)
+ {
+ printf_unfiltered ("\"maintenance set\" must be followed by the name of a set command.\n");
+ help_list (maintenance_set_cmdlist, "maintenance set ", -1, gdb_stdout);
+ }
+
+ static void
+ maintenance_show_cmd (char *args, int from_tty)
+ {
+ cmd_show_list (maintenance_show_cmdlist, from_tty, "");
+ }
+
+ /* Profiling support. */
+
+ static int maintenance_profile_p;
+
+ static void
+ maintenance_set_profile_cmd (char *args, int from_tty, struct cmd_list_element *c)
+ {
+ maintenance_profile_p = 0;
+ warning ("\"maintenance set profile\" command not supported.\n");
+ }
+
void
_initialize_maint_cmds (void)
{
+ struct cmd_list_element *tmpcmd;
+
add_prefix_cmd ("maintenance", class_maintenance, maintenance_command,
"Commands for use by GDB maintainers.\n\
Includes commands to dump specific internal GDB structures in\n\
*************** to test internal functions such as the C
*** 500,505 ****
--- 530,549 ----
&maintenanceprintlist, "maintenance print ", 0,
&maintenancelist);
+ add_prefix_cmd ("set", class_maintenance, maintenance_set_cmd, "\
+ Set GDB internal variables used by the GDB maintainer.\n\
+ Configure variables internal to GDB that aid in GDB's maintenance",
+ &maintenance_set_cmdlist, "maintenance set ",
+ 0/*allow-unknown*/,
+ &maintenancelist);
+
+ add_prefix_cmd ("show", class_maintenance, maintenance_show_cmd, "\
+ Show GDB internal variables used by the GDB maintainer.\n\
+ Configure variables internal to GDB that aid in GDB's maintenance",
+ &maintenance_show_cmdlist, "maintenance show ",
+ 0/*allow-unknown*/,
+ &maintenancelist);
+
#ifndef _WIN32
add_cmd ("dump-me", class_maintenance, maintenance_dump_me,
"Get fatal error; make debugger dump its core.\n\
*************** When non-zero, this timeout is used inst
*** 596,599 ****
--- 640,652 ----
finish a low-level step or continue operation. If the specified amount of time\n\
passes without a response from the target, an error occurs.", &setlist),
&showlist);
+
+
+ tmpcmd = add_set_cmd ("profile", class_maintenance,
+ var_boolean, &maintenance_profile_p,
+ "Set internal profiling.\n\
+ When enabled GDB is profiled.",
+ &maintenance_set_cmdlist);
+ tmpcmd->function.sfunc = maintenance_set_profile_cmd;
+ add_show_from_set (tmpcmd, &maintenance_show_cmdlist);
}
Index: testsuite/gdb.base/maint.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/maint.exp,v
retrieving revision 1.5
diff -p -r1.5 maint.exp
*** maint.exp 2001/03/08 21:09:22 1.5
--- maint.exp 2001/09/22 22:48:01
***************
*** 26,31 ****
--- 26,33 ----
#maintenance check-symtabs -- Check consistency of psymtabs and symtabs
#maintenance space -- Set the display of space usage
+ #maintenance set -- Set GDB internal variables used by the GDB maintainer
+ #maintenance show -- Show GDB internal variables used by the GDB maintainer
#maintenance time -- Set the display of time usage
#maintenance demangle -- Demangle a C++ mangled name
#maintenance dump-me -- Get fatal error; make debugger dump its core
*************** set timeout $oldtimeout
*** 443,449 ****
send_gdb "help maint\n"
gdb_expect {
! -re "Commands for use by GDB maintainers\\..*Includes commands to dump specific internal GDB structures in.*a human readable form, to cause GDB to deliberately dump core,.*to test internal functions such as the C.. demangler, etc\\..*List of maintenance subcommands:.*maintenance check-symtabs.*maintenance demangle.*(maintenance dump-me.*)?maintenance info.*maintenance internal-error.*maintenance print.*maintenance space.*maintenance time.*Type.*help maintenance.*followed by maintenance subcommand name for full documentation\\..*Command name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
{ pass "help maint" }
-re ".*$gdb_prompt $" { fail "help maint" }
timeout { fail "(timeout) help maint" }
--- 445,451 ----
send_gdb "help maint\n"
gdb_expect {
! -re "Commands for use by GDB maintainers\\..*Includes commands to dump specific internal GDB structures in.*a human readable form, to cause GDB to deliberately dump core,.*to test internal functions such as the C.. demangler, etc\\..*List of maintenance subcommands:.*maintenance check-symtabs.*maintenance demangle.*(maintenance dump-me.*)?maintenance info.*maintenance internal-error.*maintenance print.*maintenance set.*maintenance show.*maintenance space.*maintenance time.*Type.*help maintenance.*followed by maintenance subcommand name for full documentation\\..*Command name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
{ pass "help maint" }
-re ".*$gdb_prompt $" { fail "help maint" }
timeout { fail "(timeout) help maint" }