forked from Imagelibrary/binutils-gdb
* command.c (lookup_cmd_1): Clarify descriptive comments.
* gdbcmd.h (maintenanceprintlist): Add declaration. * main.c (maintenanceprintlist): Add definition. * main.c (gdb_completer_command_word_break_characters): Add. * main.c (symbol_completion_function): Switch completer word break character sets dynamically, based on whether completion is being done on commands or on something else. * main.c (initialize_cmd_lists): Init maintenanceprintlist. * maint.c: Include demangle.h. * maint.c (maintenance_demangle): New function. * maint.c (maintenance_print_command): New function. * maint.c (_initialize_maint_cmds): Reorganize some commands under new maintenance print subcommand.
This commit is contained in:
91
gdb/maint.c
91
gdb/maint.c
@@ -28,6 +28,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#include "gdbcmd.h"
|
||||
#include "symtab.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "demangle.h"
|
||||
|
||||
static void
|
||||
maintenance_command PARAMS ((char *, int));
|
||||
@@ -35,6 +36,9 @@ maintenance_command PARAMS ((char *, int));
|
||||
static void
|
||||
maintenance_dump_me PARAMS ((char *, int));
|
||||
|
||||
static void
|
||||
maintenance_demangle PARAMS ((char *, int));
|
||||
|
||||
/*
|
||||
|
||||
LOCAL FUNCTION
|
||||
@@ -72,6 +76,40 @@ maintenance_dump_me (args, from_tty)
|
||||
}
|
||||
}
|
||||
|
||||
/* Someday we should allow demangling for things other than just
|
||||
explicit strings. For example, we might want to be able to
|
||||
specify the address of a string in either GDB's process space
|
||||
or the debuggee's process space, and have gdb fetch and demangle
|
||||
that string. If we have a char* pointer "ptr" that points to
|
||||
a string, we might want to be able to given just the name and
|
||||
have GDB demangle and print what it points to, etc. (FIXME) */
|
||||
|
||||
static void
|
||||
maintenance_demangle (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
char *demangled;
|
||||
|
||||
if (args == NULL || *args == '\0')
|
||||
{
|
||||
printf ("\"maintenance demangle\" takes an argument to demangle.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
demangled = cplus_demangle (args, DMGL_ANSI | DMGL_PARAMS);
|
||||
if (demangled != NULL)
|
||||
{
|
||||
printf ("%s\n", demangled);
|
||||
free (demangled);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("Can't demangle \"%s\"\n", args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The "maintenance info" command is defined as a prefix, with allow_unknown 0.
|
||||
Therefore, its own definition is called only for "maintenance info" with
|
||||
no args. */
|
||||
@@ -86,6 +124,20 @@ maintenance_info_command (arg, from_tty)
|
||||
help_list (maintenanceinfolist, "maintenance info ", -1, stdout);
|
||||
}
|
||||
|
||||
/* The "maintenance print" command is defined as a prefix, with allow_unknown
|
||||
0. Therefore, its own definition is called only for "maintenance print"
|
||||
with no args. */
|
||||
|
||||
/* ARGSUSED */
|
||||
static void
|
||||
maintenance_print_command (arg, from_tty)
|
||||
char *arg;
|
||||
int from_tty;
|
||||
{
|
||||
printf ("\"maintenance print\" must be followed by the name of a print command.\n");
|
||||
help_list (maintenanceprintlist, "maintenance print ", -1, stdout);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
GLOBAL FUNCTION
|
||||
@@ -110,49 +162,62 @@ _initialize_maint_cmds ()
|
||||
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\
|
||||
a human readable form, including dumping of symbol tables, type\n\
|
||||
chains, etc.",
|
||||
a human readable form, to cause GDB to deliberately dump core,\n\
|
||||
to test internal functions such as the C++ demangler, etc.",
|
||||
&maintenancelist, "maintenance ", 0,
|
||||
&cmdlist);
|
||||
|
||||
add_com_alias ("mt", "maintenance", class_maintenance, 0);
|
||||
|
||||
add_prefix_cmd ("info", class_info, maintenance_info_command,
|
||||
"Maintenance command for showing things about the program being debugged.",
|
||||
"Commands for showing things about the program being debugged.",
|
||||
&maintenanceinfolist, "maintenance info ", 0,
|
||||
&maintenancelist);
|
||||
|
||||
add_prefix_cmd ("print", class_maintenance, maintenance_print_command,
|
||||
"Maintenance command for printing GDB internal state.",
|
||||
&maintenanceprintlist, "maintenance print ", 0,
|
||||
&maintenancelist);
|
||||
|
||||
add_cmd ("dump-me", class_maintenance, maintenance_dump_me,
|
||||
"Get fatal error; make debugger dump its core.\n\
|
||||
GDB sets it's handling of SIGQUIT back to SIG_DFL and then sends\n\
|
||||
itself a SIGQUIT signal.",
|
||||
&maintenancelist);
|
||||
|
||||
add_cmd ("print-type", class_maintenance, maintenance_print_type,
|
||||
add_cmd ("demangle", class_maintenance, maintenance_demangle,
|
||||
"Demangle a C++ mangled name.\n\
|
||||
Call internal GDB demangler routine to demangle a C++ link name\n\
|
||||
and prints the result.",
|
||||
&maintenancelist);
|
||||
|
||||
add_cmd ("type", class_maintenance, maintenance_print_type,
|
||||
"Print a type chain for a given symbol.\n\
|
||||
For each node in a type chain, print the raw data for each member of\n\
|
||||
the type structure, and the interpretation of the data.",
|
||||
&maintenancelist);
|
||||
&maintenanceprintlist);
|
||||
|
||||
add_cmd ("print-symbols", class_maintenance, maintenance_print_symbols,
|
||||
add_cmd ("symbols", class_maintenance, maintenance_print_symbols,
|
||||
"Print dump of current symbol definitions.\n\
|
||||
Entries in the full symbol table are dumped to file OUTFILE.\n\
|
||||
If a SOURCE file is specified, dump only that file's symbols.",
|
||||
&maintenancelist);
|
||||
&maintenanceprintlist);
|
||||
|
||||
add_cmd ("print-msymbols", class_maintenance, maintenance_print_msymbols,
|
||||
add_cmd ("msymbols", class_maintenance, maintenance_print_msymbols,
|
||||
"Print dump of current minimal symbol definitions.\n\
|
||||
Entries in the minimal symbol table are dumped to file OUTFILE.\n\
|
||||
If a SOURCE file is specified, dump only that file's minimal symbols.",
|
||||
&maintenancelist);
|
||||
&maintenanceprintlist);
|
||||
|
||||
add_cmd ("print-psymbols", class_maintenance, maintenance_print_psymbols,
|
||||
add_cmd ("psymbols", class_maintenance, maintenance_print_psymbols,
|
||||
"Print dump of current partial symbol definitions.\n\
|
||||
Entries in the partial symbol table are dumped to file OUTFILE.\n\
|
||||
If a SOURCE file is specified, dump only that file's partial symbols.",
|
||||
&maintenancelist);
|
||||
&maintenanceprintlist);
|
||||
|
||||
add_cmd ("print-objfiles", class_maintenance, maintenance_print_objfiles,
|
||||
add_cmd ("objfiles", class_maintenance, maintenance_print_objfiles,
|
||||
"Print dump of current object file definitions.",
|
||||
&maintenancelist);
|
||||
&maintenanceprintlist);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user