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

Andrew Cagney cagney@gnu.org
Mon Feb 21 02:36:00 GMT 2005


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)



More information about the Gdb-patches mailing list