33#include "gdbsupport/gdb_optional.h"
95 CORE_ADDR frameaddr = 0;
102 error (_(
"-var-create: Usage: NAME FRAME EXPRESSION."));
107 const char *
name = argv[0];
108 std::string gen_name;
109 if (strcmp (
name,
"-") == 0)
112 name = gen_name.c_str ();
114 else if (!isalpha (
name[0]))
115 error (_(
"-var-create: name of object must begin with a letter"));
117 if (strcmp (frame,
"*") == 0)
119 else if (strcmp (frame,
"@") == 0)
129 "Name=\"%s\", Frame=\"%s\" (%s), Expression=\"%s\"\n",
130 name, frame, hex_string (frameaddr),
expr);
135 error (_(
"-var-create: unable to create variable object"));
148 int children_only_p = 0;
151 if (argc < 1 || argc > 2)
152 error (_(
"-var-delete: Usage: [-c] EXPRESSION."));
160 if (strcmp (
name,
"-c") == 0)
161 error (_(
"-var-delete: Missing required "
162 "argument after '-c': variable object name"));
164 error (_(
"-var-delete: Illegal variable object name"));
171 if (strcmp (
name,
"-c") != 0)
172 error (_(
"-var-delete: Invalid option."));
198 if (strncmp (arg,
"natural", len) == 0)
200 else if (strncmp (arg,
"binary", len) == 0)
202 else if (strncmp (arg,
"decimal", len) == 0)
204 else if (strncmp (arg,
"hexadecimal", len) == 0)
206 else if (strncmp (arg,
"octal", len) == 0)
208 else if (strncmp (arg,
"zero-hexadecimal", len) == 0)
212 error (_(
"Must specify the format as: \"natural\", "
213 "\"binary\", \"decimal\", \"hexadecimal\", \"octal\" or \"zero-hexadecimal\""));
224 error (_(
"-var-set-format: Usage: NAME FORMAT."));
248 error (_(
"Usage: NAME VISUALIZER_FUNCTION."));
253 error (_(
"Variable object not found"));
265 error (_(
"-var-set-format: Usage: NAME FROZEN_FLAG."));
269 if (strcmp (argv[1],
"0") == 0)
271 else if (strcmp (argv[1],
"1") == 0)
274 error (_(
"Invalid flag value"));
291 error (_(
"-var-show-format: Usage: NAME."));
309 error (_(
"-var-info-num-children: Usage: NAME."));
343 return (
type->
code () != TYPE_CODE_ARRAY
344 &&
type->
code () != TYPE_CODE_STRUCT
345 &&
type->
code () != TYPE_CODE_UNION);
357 if (argc < 1 || argc > 4)
358 error (_(
"-var-list-children: Usage: "
359 "[PRINT_VALUES] NAME [FROM TO]"));
362 if (argc == 1 || argc == 3)
369 from = atoi (argv[argc - 2]);
370 to = atoi (argv[argc - 1]);
378 const std::vector<varobj *> &
children
382 if (argc == 2 || argc == 4)
395 gdb::optional<ui_out_emit_tuple> tuple_emitter;
396 gdb::optional<ui_out_emit_list> list_emitter;
399 tuple_emitter.emplace (uiout,
"children");
401 list_emitter.emplace (uiout,
"children");
420 error (_(
"-var-info-type: Usage: NAME."));
436 error (_(
"Usage: NAME."));
454 error (_(
"-var-info-expression: Usage: NAME."));
476 error (_(
"-var-show-attributes: Usage: NAME."));
483 if (attr & 0x00000001)
486 attstr =
"noneditable";
506 static const struct mi_opt opts[] =
518 int opt =
mi_getopt (
"-var-evaluate-expression", argc, argv,
523 switch ((
enum opt) opt)
527 error (_(
"Cannot specify format more than once"));
536 error (_(
"Usage: [-f FORMAT] NAME"));
539 error (_(
"Garbage at end of command"));
565 error (_(
"-var-assign: Usage: NAME EXPRESSION."));
571 error (_(
"-var-assign: Variable object is not editable"));
577 scoped_restore save_suppress
581 error (_(
"-var-assign: Could not assign "
582 "expression to variable object"));
607 thread_stopped = (tp == NULL
623 if (argc != 1 && argc != 2)
624 error (_(
"-var-update: Usage: [PRINT_VALUES] NAME."));
638 gdb::optional<ui_out_emit_tuple> tuple_emitter;
639 gdb::optional<ui_out_emit_list> list_emitter;
642 tuple_emitter.emplace (uiout,
"changelist");
644 list_emitter.emplace (uiout,
"changelist");
649 if ((*
name ==
'*' || *
name ==
'@') && (*(
name + 1) ==
'\0'))
677 std::vector<varobj_update_result> changes =
varobj_update (&var, is_explicit);
683 gdb::optional<ui_out_emit_tuple> tuple_emitter;
685 tuple_emitter.emplace (uiout,
nullptr);
722 if (r.type_changed || r.children_changed)
737 if (!r.newobj.empty ())
741 for (
varobj *child : r.newobj)
754 error (_(
"-enable-pretty-printing: no arguments allowed"));
766 error (_(
"-var-set-update-range: Usage: VAROBJ FROM TO"));
769 from = atoi (argv[1]);
void field_string(const char *fldname, const char *string, const ui_file_style &style=ui_file_style())
void field_signed(const char *fldname, LONGEST value)
struct thread_info * find_thread_global_id(int global_id)
struct thread_info * inferior_thread(void)
struct type * check_typedef(struct type *type)
static enum varobj_display_formats mi_parse_format(const char *arg)
static void varobj_update_one(struct varobj *var, enum print_values print_values, bool is_explicit)
static void mi_cmd_var_update_iter(struct varobj *var, bool only_floating, enum print_values print_values)
static int mi_print_value_p(struct varobj *var, enum print_values print_values)
static void print_varobj(struct varobj *var, enum print_values print_values, int print_expression)
mi_cmd_argv_ftype mi_cmd_var_list_children
mi_cmd_argv_ftype mi_cmd_var_update
mi_cmd_argv_ftype mi_cmd_var_delete
mi_cmd_argv_ftype mi_cmd_var_evaluate_expression
mi_cmd_argv_ftype mi_cmd_var_set_format
mi_cmd_argv_ftype mi_cmd_var_info_path_expression
mi_cmd_argv_ftype mi_cmd_enable_pretty_printing
mi_cmd_argv_ftype mi_cmd_var_show_format
mi_cmd_argv_ftype mi_cmd_var_info_expression
mi_cmd_argv_ftype mi_cmd_var_assign
mi_cmd_argv_ftype mi_cmd_var_info_type
mi_cmd_argv_ftype mi_cmd_var_set_update_range
mi_cmd_argv_ftype mi_cmd_var_show_attributes
mi_cmd_argv_ftype mi_cmd_var_info_num_children
mi_cmd_argv_ftype mi_cmd_var_set_frozen
mi_cmd_argv_ftype mi_cmd_var_set_visualizer
mi_cmd_argv_ftype mi_cmd_var_create
int mi_getopt(const char *prefix, int argc, char **argv, const struct mi_opt *opts, int *oind, char **oarg)
int mi_version(ui_out *uiout)
enum print_values mi_parse_print_values(const char *name)
virtual const char * natural_name() const =0
enum varobj_display_formats format
std::vector< varobj * > children
void gdb_printf(struct ui_file *stream, const char *format,...)
CORE_ADDR string_to_core_addr(const char *my_string)
int varobj_get_thread_id(const struct varobj *var)
enum varobj_display_formats varobj_get_display_format(const struct varobj *var)
bool varobj_floating_p(const struct varobj *var)
int varobj_get_attributes(const struct varobj *var)
void varobj_enable_pretty_printing(void)
const char * varobj_get_path_expr(const struct varobj *var)
struct varobj * varobj_create(const char *objname, const char *expression, CORE_ADDR frame, enum varobj_type type)
void varobj_set_child_range(struct varobj *var, int from, int to)
void varobj_get_child_range(const struct varobj *var, int *from, int *to)
bool varobj_editable_p(const struct varobj *var)
const std::vector< varobj * > & varobj_list_children(struct varobj *var, int *from, int *to)
std::string varobj_gen_name(void)
const struct language_defn * varobj_get_language(const struct varobj *var)
std::string varobj_get_formatted_value(struct varobj *var, enum varobj_display_formats format)
struct type * varobj_get_gdb_type(const struct varobj *var)
gdb::unique_xmalloc_ptr< char > varobj_get_display_hint(const struct varobj *var)
const char * varobj_get_objname(const struct varobj *var)
void varobj_set_visualizer(struct varobj *var, const char *visualizer)
const char * varobj_format_string[]
void varobj_set_frozen(struct varobj *var, bool frozen)
std::string varobj_get_value(struct varobj *var)
struct varobj * varobj_get_handle(const char *objname)
bool varobj_set_value(struct varobj *var, const char *expression)
int varobj_get_num_children(struct varobj *var)
bool varobj_get_frozen(const struct varobj *var)
bool varobj_is_dynamic_p(const struct varobj *var)
std::vector< varobj_update_result > varobj_update(struct varobj **varp, bool is_explicit)
std::string varobj_get_type(struct varobj *var)
int varobj_delete(struct varobj *var, bool only_children)
void all_root_varobjs(gdb::function_view< void(struct varobj *var)> func)
bool varobj_has_more(const struct varobj *var, int to)
std::string varobj_get_expression(const struct varobj *var)
enum varobj_display_formats varobj_set_display_format(struct varobj *var, enum varobj_display_formats format)