This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [RFA] Version 2 of patch to add 'maint profile-gdb' command


> 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" }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]