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]
Other format: [Raw text]

Re: [PATCH: gdb/mi + doco] -var-update


Nick Roberts wrote:
This patch is very similar to ones that I have previously contributed for
-var-list-children and -stack-list-locals. Testcases to follow
(assuming the patch is favourably received).

Nick


Purpose:


Currently the MI command "-var-update" gives the names of the variable objects
but not their value which must be accessed individually (using the MI command
-var-evaluate-expression). This means that a front end can take too long
processing a separate MI command for variable object. This patch adapts
"-var-update" so that it gives values, if required. The existing behaviour is
preserved for backward compatibility.

*** /home/nick/src/gdb/mi/mi-cmd-var.c.~1.21.~ 2005-02-13 00:36:20.000000000 +1300
--- /home/nick/src/gdb/mi/mi-cmd-var.c 2005-02-19 22:49:18.000000000 +1300
***************
*** 32,38 ****
extern int varobjdebug; /* defined in varobj.c */
! static int varobj_update_one (struct varobj *var);
/* VAROBJ operations */
--- 32,39 ----
extern int varobjdebug; /* defined in varobj.c */
! static int varobj_update_one (struct varobj *var,
! enum print_values print_values);
/* VAROBJ operations */
***************
*** 426,436 ****
struct cleanup *cleanup;
char *name;
int nv;
! if (argc != 1)
! error (_("mi_cmd_var_update: Usage: NAME."));
! name = argv[0];
/* Check if the parameter is a "*" which means that we want
to update all variables */
--- 427,450 ----
struct cleanup *cleanup;
char *name;
int nv;
+ enum print_values print_values;
! if (argc != 1 && argc != 2)
! error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME."));
! if (argc == 1) name = argv[0];
! else name = (argv[1]);
! ! if (argc == 2)
! if (strcmp (argv[0], "0") == 0
! || strcmp (argv[0], "--no-values") == 0)
! print_values = PRINT_NO_VALUES;
! else if (strcmp (argv[0], "1") == 0
! || strcmp (argv[0], "--all-values") == 0)
! print_values = PRINT_ALL_VALUES;
! else
! error (_("Unknown value for PRINT_VALUES: must be: 0 or \"--no-values\", 1 or \"--all-values\""));
! else print_values = PRINT_NO_VALUES;

Nick,


it should use mi-getopt (which correctly [?] implements the MI input syntax). If you find doing this alters the commands semantics (quoting of parameters might be affected) then we'll need to introduce a new ``fixed'' command.

Andrew

(I'm fine with the theory)


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