GDB (xrefs)
Loading...
Searching...
No Matches
mi-cmds.h
Go to the documentation of this file.
1/* MI Command Set for GDB, the GNU debugger.
2
3 Copyright (C) 2000-2023 Free Software Foundation, Inc.
4
5 Contributed by Cygnus Solutions (a Red Hat company).
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22#ifndef MI_MI_CMDS_H
23#define MI_MI_CMDS_H
24
25#include "gdbsupport/function-view.h"
26#include "gdbsupport/gdb_optional.h"
27#include "mi/mi-main.h"
28
33};
34
35typedef void (mi_cmd_argv_ftype) (const char *command, char **argv, int argc);
36
37/* Declarations of the functions implementing each command. */
38
143
144/* The abstract base class for all MI command types. */
145
147{
148 /* Constructor. NAME is the name of this MI command, excluding any
149 leading dash, that is the initial string the user will enter to run
150 this command. The SUPPRESS_NOTIFICATION pointer is a flag which will
151 be set to 1 when this command is invoked, and reset to its previous
152 value once the command invocation has completed. */
153 mi_command (const char *name, int *suppress_notification);
154
155 /* Destructor. */
156 virtual ~mi_command () = default;
157
158 /* Return the name of this command. This is the command that the user
159 will actually type in, without any arguments, and without the leading
160 dash. */
161 const char *name () const
162 { return m_name; }
163
164 /* Execute the MI command. this needs to be overridden in each
165 base class. PARSE is the parsed command line from the user.
166 Can throw an exception if something goes wrong. */
167 virtual void invoke (struct mi_parse *parse) const = 0;
168
169 /* Return whether this command preserves user selected context (thread
170 and frame). */
172 {
173 /* Here we exploit the fact that if MI command is supposed to change
174 user context, then it should not emit change notifications. Therefore if
175 command does not suppress user context change notifications, then it should
176 preserve the context. */
178 }
179
180 /* If this command was created with a suppress notifications pointer,
181 then this function will set the suppress flag and return a
182 gdb::optional with its value set to an object that will restore the
183 previous value of the suppress notifications flag.
184
185 If this command was created without a suppress notifications points,
186 then this function returns an empty gdb::optional. */
187 gdb::optional<scoped_restore_tmpl<int>> do_suppress_notification () const;
188
189private:
190
191 /* The name of the command. */
192 const char *m_name;
193
194 /* Pointer to integer to set during command's invocation. */
196};
197
198/* A command held in the global mi_cmd_table. */
199
200using mi_command_up = std::unique_ptr<struct mi_command>;
201
202/* Lookup a command in the MI command table, returns nullptr if COMMAND is
203 not found. */
204
205extern mi_command *mi_cmd_lookup (const char *command);
206
207extern void mi_execute_command (const char *cmd, int from_tty);
208
209/* Insert COMMAND into the global mi_cmd_table. Return false if
210 COMMAND->name already exists in mi_cmd_table, in which case COMMAND will
211 not have been added to mi_cmd_table. Otherwise, return true, and
212 COMMAND was added to mi_cmd_table. */
213
214extern bool insert_mi_cmd_entry (mi_command_up command);
215
216/* Remove the command called NAME from the global mi_cmd_table. Return
217 true if the removal was a success, otherwise return false, which
218 indicates no command called NAME was found in the mi_cmd_table. */
219
220extern bool remove_mi_cmd_entry (const std::string &name);
221
222/* Call CALLBACK for each registered MI command. Remove commands for which
223 CALLBACK returns true. */
224
226 = gdb::function_view<bool (mi_command *)>;
228
229#endif /* MI_MI_CMDS_H */
const char *const name
mi_cmd_argv_ftype mi_cmd_exec_jump
mi_cmd_argv_ftype mi_cmd_data_list_register_names
mi_cmd_argv_ftype mi_cmd_var_list_children
mi_cmd_argv_ftype mi_cmd_exec_next_instruction
mi_cmd_argv_ftype mi_cmd_stack_info_frame
mi_cmd_argv_ftype mi_cmd_data_read_memory_bytes
mi_cmd_argv_ftype mi_cmd_var_update
mi_cmd_argv_ftype mi_cmd_stack_list_variables
mi_cmd_argv_ftype mi_cmd_enable_frame_filters
mi_cmd_argv_ftype mi_cmd_break_condition
mi_cmd_argv_ftype mi_cmd_stack_select_frame
mi_cmd_argv_ftype mi_cmd_stack_info_depth
mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files
mi_cmd_argv_ftype mi_cmd_info_os
mi_cmd_argv_ftype mi_cmd_trace_stop
mi_cmd_argv_ftype mi_cmd_break_commands
std::unique_ptr< struct mi_command > mi_command_up
Definition mi-cmds.h:200
mi_cmd_argv_ftype mi_cmd_exec_finish
mi_cmd_argv_ftype mi_cmd_symbol_info_modules
mi_cmd_argv_ftype mi_cmd_target_file_delete
mi_cmd_argv_ftype mi_cmd_inferior_tty_show
mi_cmd_argv_ftype mi_cmd_ada_task_info
mi_cmd_argv_ftype mi_cmd_file_list_shared_libraries
void() mi_cmd_argv_ftype(const char *command, char **argv, int argc)
Definition mi-cmds.h:35
mi_cmd_argv_ftype mi_cmd_data_list_changed_registers
mi_cmd_argv_ftype mi_cmd_stack_list_locals
mi_cmd_argv_ftype mi_cmd_exec_return
mi_cmd_argv_ftype mi_cmd_dprintf_insert
mi_cmd_argv_ftype mi_cmd_exec_next
mi_cmd_argv_ftype mi_cmd_exec_step
mi_cmd_argv_ftype mi_cmd_var_delete
mi_cmd_argv_ftype mi_cmd_inferior_tty_set
mi_cmd_argv_ftype mi_cmd_stack_list_frames
mi_cmd_argv_ftype mi_cmd_add_inferior
mi_cmd_argv_ftype mi_cmd_catch_throw
mi_cmd_argv_ftype mi_cmd_break_insert
mi_cmd_argv_ftype mi_cmd_symbol_list_lines
mi_cmd_argv_ftype mi_cmd_env_cd
mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file
mi_cmd_argv_ftype mi_cmd_enable_timings
mi_cmd_argv_ftype mi_cmd_catch_load
mi_cmd_argv_ftype mi_cmd_var_evaluate_expression
mi_cmd_argv_ftype mi_cmd_symbol_info_functions
mi_cmd_argv_ftype mi_cmd_var_set_format
mi_cmd_argv_ftype mi_cmd_env_path
mi_cmd_argv_ftype mi_cmd_data_evaluate_expression
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_disassemble
print_values
Definition mi-cmds.h:29
@ PRINT_SIMPLE_VALUES
Definition mi-cmds.h:32
@ PRINT_ALL_VALUES
Definition mi-cmds.h:31
@ PRINT_NO_VALUES
Definition mi-cmds.h:30
mi_cmd_argv_ftype mi_cmd_data_read_memory
mi_cmd_argv_ftype mi_cmd_target_detach
mi_cmd_argv_ftype mi_cmd_target_file_get
mi_cmd_argv_ftype mi_cmd_info_ada_exceptions
mi_cmd_argv_ftype mi_cmd_catch_handlers
mi_cmd_argv_ftype mi_cmd_catch_unload
mi_cmd_argv_ftype mi_cmd_thread_info
mi_cmd_argv_ftype mi_cmd_exec_interrupt
mi_cmd_argv_ftype mi_cmd_trace_find
gdb::function_view< bool(mi_command *)> remove_mi_cmd_entries_ftype
Definition mi-cmds.h:226
mi_cmd_argv_ftype mi_cmd_exec_step_instruction
mi_cmd_argv_ftype mi_cmd_var_show_format
mi_cmd_argv_ftype mi_cmd_symbol_info_variables
mi_cmd_argv_ftype mi_cmd_trace_frame_collected
mi_cmd_argv_ftype mi_cmd_info_gdb_mi_command
mi_cmd_argv_ftype mi_cmd_break_passcount
mi_cmd_argv_ftype mi_cmd_trace_start
mi_cmd_argv_ftype mi_cmd_var_info_expression
mi_cmd_argv_ftype mi_cmd_interpreter_exec
mi_cmd_argv_ftype mi_cmd_env_pwd
mi_command * mi_cmd_lookup(const char *command)
Definition mi-cmds.c:364
mi_cmd_argv_ftype mi_cmd_trace_save
mi_cmd_argv_ftype mi_cmd_remove_inferior
mi_cmd_argv_ftype mi_cmd_catch_exception
mi_cmd_argv_ftype mi_cmd_data_write_register_values
mi_cmd_argv_ftype mi_cmd_list_features
mi_cmd_argv_ftype mi_cmd_var_assign
mi_cmd_argv_ftype mi_cmd_symbol_info_types
mi_cmd_argv_ftype mi_cmd_data_write_memory
void remove_mi_cmd_entries(remove_mi_cmd_entries_ftype callback)
Definition mi-cmds.c:134
mi_cmd_argv_ftype mi_cmd_env_dir
mi_cmd_argv_ftype mi_cmd_data_write_memory_bytes
mi_cmd_argv_ftype mi_cmd_target_file_put
mi_cmd_argv_ftype mi_cmd_exec_continue
mi_cmd_argv_ftype mi_cmd_target_flash_erase
mi_cmd_argv_ftype mi_cmd_symbol_info_module_variables
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_thread_select
void mi_execute_command(const char *cmd, int from_tty)
Definition mi-main.c:1907
bool remove_mi_cmd_entry(const std::string &name)
Definition mi-cmds.c:122
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_list_thread_groups
mi_cmd_argv_ftype mi_cmd_trace_define_variable
mi_cmd_argv_ftype mi_cmd_symbol_info_module_functions
mi_cmd_argv_ftype mi_cmd_break_watch
bool insert_mi_cmd_entry(mi_command_up command)
Definition mi-cmds.c:106
mi_cmd_argv_ftype mi_cmd_var_set_frozen
mi_cmd_argv_ftype mi_cmd_catch_assert
mi_cmd_argv_ftype mi_cmd_var_set_visualizer
mi_cmd_argv_ftype mi_cmd_catch_catch
mi_cmd_argv_ftype mi_cmd_thread_list_ids
mi_cmd_argv_ftype mi_cmd_gdb_exit
mi_cmd_argv_ftype mi_cmd_list_target_features
mi_cmd_argv_ftype mi_cmd_trace_status
mi_cmd_argv_ftype mi_cmd_var_create
mi_cmd_argv_ftype mi_cmd_trace_list_variables
mi_cmd_argv_ftype mi_cmd_exec_run
mi_cmd_argv_ftype mi_cmd_catch_rethrow
mi_cmd_argv_ftype mi_cmd_data_list_register_values
mi_cmd_argv_ftype mi_cmd_complete
mi_cmd_argv_ftype mi_cmd_stack_list_args
const char * name() const
Definition mi-cmds.h:161
gdb::optional< scoped_restore_tmpl< int > > do_suppress_notification() const
Definition mi-cmds.c:187
virtual void invoke(struct mi_parse *parse) const =0
int * m_suppress_notification
Definition mi-cmds.h:195
bool preserve_user_selected_context() const
Definition mi-cmds.h:171
virtual ~mi_command()=default
const char * m_name
Definition mi-cmds.h:192