GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Enumerations | Functions | Variables
mi-main.c File Reference
#include "defs.h"
#include "arch-utils.h"
#include "target.h"
#include "inferior.h"
#include "infrun.h"
#include "top.h"
#include "ui.h"
#include "gdbthread.h"
#include "mi-cmds.h"
#include "mi-parse.h"
#include "mi-getopt.h"
#include "mi-console.h"
#include "ui-out.h"
#include "mi-out.h"
#include "interps.h"
#include "gdbsupport/event-loop.h"
#include "event-top.h"
#include "gdbcore.h"
#include "value.h"
#include "regcache.h"
#include "frame.h"
#include "mi-main.h"
#include "mi-interp.h"
#include "language.h"
#include "valprint.h"
#include "osdata.h"
#include "gdbsupport/gdb_splay_tree.h"
#include "tracepoint.h"
#include "ada-lang.h"
#include "linespec.h"
#include "extension.h"
#include "gdbcmd.h"
#include "observable.h"
#include "gdbsupport/gdb_optional.h"
#include "gdbsupport/byte-vector.h"
#include <ctype.h>
#include "gdbsupport/run-time-clock.h"
#include <chrono>
#include "progspace-and-thread.h"
#include "gdbsupport/rsp-low.h"
#include <algorithm>
#include <set>
#include <map>

Go to the source code of this file.

Classes

struct  collect_cores_data
 
struct  print_one_inferior_data
 
struct  user_selected_context
 

Enumerations

enum  { FROM_TTY = 0 }
 

Functions

static void mi_cmd_execute (struct mi_parse *parse)
 
static void mi_execute_async_cli_command (const char *cli_command, const char *const *argv, int argc)
 
static bool register_changed_p (int regnum, readonly_detached_regcache *, readonly_detached_regcache *)
 
static void output_register (frame_info_ptr, int regnum, int format, int skip_unavailable)
 
static void set_mi_async_command (const char *args, int from_tty, struct cmd_list_element *c)
 
static void show_mi_async_command (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
int mi_async_p (void)
 
static void timestamp (struct mi_timestamp *tv)
 
static void print_diff (struct ui_file *file, struct mi_timestamp *start, struct mi_timestamp *end)
 
void mi_cmd_gdb_exit (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_next (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_next_instruction (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_step (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_step_instruction (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_finish (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_return (const char *command, const char *const *argv, int argc)
 
void mi_cmd_exec_jump (const char *args, const char *const *argv, int argc)
 
static void proceed_thread (struct thread_info *thread, int pid)
 
static int proceed_thread_callback (struct thread_info *thread, void *arg)
 
static void exec_continue (const char *const *argv, int argc)
 
static void exec_reverse_continue (const char *const *argv, int argc)
 
void mi_cmd_exec_continue (const char *command, const char *const *argv, int argc)
 
static int interrupt_thread_callback (struct thread_info *thread, void *arg)
 
void mi_cmd_exec_interrupt (const char *command, const char *const *argv, int argc)
 
static void run_one_inferior (inferior *inf, bool start_p)
 
void mi_cmd_exec_run (const char *command, const char *const *argv, int argc)
 
static int find_thread_of_process (struct thread_info *ti, void *p)
 
void mi_cmd_target_detach (const char *command, const char *const *argv, int argc)
 
void mi_cmd_target_flash_erase (const char *command, const char *const *argv, int argc)
 
void mi_cmd_thread_select (const char *command, const char *const *argv, int argc)
 
void mi_cmd_thread_list_ids (const char *command, const char *const *argv, int argc)
 
void mi_cmd_thread_info (const char *command, const char *const *argv, int argc)
 
static int collect_cores (struct thread_info *ti, void *xdata)
 
static void print_one_inferior (struct inferior *inferior, bool recurse, const std::set< int > &ids)
 
static void output_cores (struct ui_out *uiout, const char *field_name, const char *xcores)
 
static void list_available_thread_groups (const std::set< int > &ids, int recurse)
 
void mi_cmd_list_thread_groups (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_list_register_names (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_list_changed_registers (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_list_register_values (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_write_register_values (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_evaluate_expression (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_read_memory (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_read_memory_bytes (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_write_memory (const char *command, const char *const *argv, int argc)
 
void mi_cmd_data_write_memory_bytes (const char *command, const char *const *argv, int argc)
 
void mi_cmd_enable_timings (const char *command, const char *const *argv, int argc)
 
void mi_cmd_list_features (const char *command, const char *const *argv, int argc)
 
void mi_cmd_list_target_features (const char *command, const char *const *argv, int argc)
 
void mi_cmd_add_inferior (const char *command, const char *const *argv, int argc)
 
void mi_cmd_remove_inferior (const char *command, const char *const *argv, int argc)
 
static void captured_mi_execute_command (struct mi_interp *mi, struct ui_out *uiout, struct mi_parse *context)
 
static void mi_print_exception (struct mi_interp *mi, const char *token, const struct gdb_exception &exception)
 
void mi_execute_command (const char *cmd, int from_tty)
 
void mi_execute_command (mi_parse *context)
 
void mi_execute_cli_command (const char *cmd, bool args_p, const char *args)
 
void mi_load_progress (const char *section_name, unsigned long sent_so_far, unsigned long total_section, unsigned long total_sent, unsigned long grand_total)
 
static void print_diff_now (struct ui_file *file, struct mi_timestamp *start)
 
void mi_print_timing_maybe (struct ui_file *file)
 
void mi_cmd_trace_define_variable (const char *command, const char *const *argv, int argc)
 
void mi_cmd_trace_list_variables (const char *command, const char *const *argv, int argc)
 
void mi_cmd_trace_find (const char *command, const char *const *argv, int argc)
 
void mi_cmd_trace_save (const char *command, const char *const *argv, int argc)
 
void mi_cmd_trace_start (const char *command, const char *const *argv, int argc)
 
void mi_cmd_trace_status (const char *command, const char *const *argv, int argc)
 
void mi_cmd_trace_stop (const char *command, const char *const *argv, int argc)
 
void mi_cmd_ada_task_info (const char *command, const char *const *argv, int argc)
 
static void print_variable_or_computed (const char *expression, enum print_values values)
 
void mi_cmd_trace_frame_collected (const char *command, const char *const *argv, int argc)
 
void mi_cmd_fix_multi_location_breakpoint_output (const char *command, const char *const *argv, int argc)
 
void mi_cmd_fix_breakpoint_script_output (const char *command, const char *const *argv, int argc)
 
void mi_cmd_complete (const char *command, const char *const *argv, int argc)
 
int mi_parse_thread_group_id (const char *id)
 
void _initialize_mi_main ()
 

Variables

static int mi_debug_p
 
static struct mi_timestampcurrent_command_ts
 
static int do_timings = 0
 
static struct mi_parsecurrent_context
 
static bool mi_async = false
 
static bool mi_async_1 = false
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FROM_TTY 

Definition at line 67 of file mi-main.c.

Function Documentation

◆ _initialize_mi_main()

void _initialize_mi_main ( )

Definition at line 2821 of file mi-main.c.

Referenced by initialize_all_files().

◆ captured_mi_execute_command()

static void captured_mi_execute_command ( struct mi_interp * mi,
struct ui_out * uiout,
struct mi_parse * context )
static

◆ collect_cores()

static int collect_cores ( struct thread_info * ti,
void * xdata )
static

Definition at line 614 of file mi-main.c.

References thread_info::ptid, and target_core_of_thread().

Referenced by print_one_inferior().

◆ exec_continue()

static void exec_continue ( const char *const * argv,
int argc )
static

◆ exec_reverse_continue()

static void exec_reverse_continue ( const char *const * argv,
int argc )
static

◆ find_thread_of_process()

static int find_thread_of_process ( struct thread_info * ti,
void * p )
static

Definition at line 487 of file mi-main.c.

References pid, thread_info::ptid, thread_info::state, and THREAD_EXITED.

Referenced by mi_cmd_target_detach().

◆ interrupt_thread_callback()

static int interrupt_thread_callback ( struct thread_info * thread,
void * arg )
static

Definition at line 349 of file mi-main.c.

References pid, thread_info::ptid, thread_info::state, target_stop(), and THREAD_RUNNING.

Referenced by mi_cmd_exec_interrupt().

◆ list_available_thread_groups()

static void list_available_thread_groups ( const std::set< int > & ids,
int recurse )
static

◆ mi_async_p()

int mi_async_p ( void )

◆ mi_cmd_ada_task_info()

void mi_cmd_ada_task_info ( const char * command,
const char *const * argv,
int argc )

Definition at line 2491 of file mi-main.c.

References current_inferior(), current_uiout, and print_ada_task_info().

◆ mi_cmd_add_inferior()

void mi_cmd_add_inferior ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_complete()

void mi_cmd_complete ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_evaluate_expression()

void mi_cmd_data_evaluate_expression ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_list_changed_registers()

void mi_cmd_data_list_changed_registers ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_list_register_names()

void mi_cmd_data_list_register_names ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_list_register_values()

void mi_cmd_data_list_register_values ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_read_memory()

void mi_cmd_data_read_memory ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_read_memory_bytes()

void mi_cmd_data_read_memory_bytes ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_write_memory()

void mi_cmd_data_write_memory ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_write_memory_bytes()

void mi_cmd_data_write_memory_bytes ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_data_write_register_values()

void mi_cmd_data_write_register_values ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_enable_timings()

void mi_cmd_enable_timings ( const char * command,
const char *const * argv,
int argc )

Definition at line 1632 of file mi-main.c.

References do_timings.

◆ mi_cmd_exec_continue()

void mi_cmd_exec_continue ( const char * command,
const char *const * argv,
int argc )

Definition at line 340 of file mi-main.c.

References exec_continue(), and exec_reverse_continue().

◆ mi_cmd_exec_finish()

void mi_cmd_exec_finish ( const char * command,
const char *const * argv,
int argc )

Definition at line 208 of file mi-main.c.

References mi_execute_async_cli_command().

◆ mi_cmd_exec_interrupt()

void mi_cmd_exec_interrupt ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_exec_jump()

void mi_cmd_exec_jump ( const char * args,
const char *const * argv,
int argc )

Definition at line 237 of file mi-main.c.

References mi_execute_async_cli_command().

◆ mi_cmd_exec_next()

void mi_cmd_exec_next ( const char * command,
const char *const * argv,
int argc )

Definition at line 166 of file mi-main.c.

References mi_execute_async_cli_command().

◆ mi_cmd_exec_next_instruction()

void mi_cmd_exec_next_instruction ( const char * command,
const char *const * argv,
int argc )

Definition at line 176 of file mi-main.c.

References mi_execute_async_cli_command().

◆ mi_cmd_exec_return()

void mi_cmd_exec_return ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_exec_run()

void mi_cmd_exec_run ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_exec_step()

void mi_cmd_exec_step ( const char * command,
const char *const * argv,
int argc )

Definition at line 187 of file mi-main.c.

References mi_execute_async_cli_command().

◆ mi_cmd_exec_step_instruction()

void mi_cmd_exec_step_instruction ( const char * command,
const char *const * argv,
int argc )

Definition at line 197 of file mi-main.c.

References mi_execute_async_cli_command().

◆ mi_cmd_execute()

static void mi_cmd_execute ( struct mi_parse * parse)
static

◆ mi_cmd_fix_breakpoint_script_output()

void mi_cmd_fix_breakpoint_script_output ( const char * command,
const char *const * argv,
int argc )

Definition at line 2753 of file mi-main.c.

References fix_breakpoint_script_output_globally.

Referenced by add_builtin_mi_commands().

◆ mi_cmd_fix_multi_location_breakpoint_output()

void mi_cmd_fix_multi_location_breakpoint_output ( const char * command,
const char *const * argv,
int argc )

Definition at line 2743 of file mi-main.c.

References fix_multi_location_breakpoint_output_globally.

Referenced by add_builtin_mi_commands().

◆ mi_cmd_gdb_exit()

void mi_cmd_gdb_exit ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_list_features()

void mi_cmd_list_features ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_list_target_features()

void mi_cmd_list_target_features ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_list_thread_groups()

void mi_cmd_list_thread_groups ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_remove_inferior()

void mi_cmd_remove_inferior ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_target_detach()

void mi_cmd_target_detach ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_target_flash_erase()

void mi_cmd_target_flash_erase ( const char * command,
const char *const * argv,
int argc )

Definition at line 546 of file mi-main.c.

References flash_erase_command().

◆ mi_cmd_thread_info()

void mi_cmd_thread_info ( const char * command,
const char *const * argv,
int argc )

Definition at line 599 of file mi-main.c.

References current_uiout, and print_thread_info().

◆ mi_cmd_thread_list_ids()

void mi_cmd_thread_list_ids ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_thread_select()

void mi_cmd_thread_select ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_trace_define_variable()

void mi_cmd_trace_define_variable ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_trace_find()

void mi_cmd_trace_find ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_trace_frame_collected()

void mi_cmd_trace_frame_collected ( const char * command,
const char *const * argv,
int argc )

◆ mi_cmd_trace_list_variables()

void mi_cmd_trace_list_variables ( const char * command,
const char *const * argv,
int argc )

Definition at line 2334 of file mi-main.c.

References tvariables_info_1().

◆ mi_cmd_trace_save()

void mi_cmd_trace_save ( const char * command,
const char *const * argv,
int argc )

Definition at line 2420 of file mi-main.c.

References mi_getopt(), trace_save_ctf(), and trace_save_tfile().

◆ mi_cmd_trace_start()

void mi_cmd_trace_start ( const char * command,
const char *const * argv,
int argc )

Definition at line 2470 of file mi-main.c.

References start_tracing().

◆ mi_cmd_trace_status()

void mi_cmd_trace_status ( const char * command,
const char *const * argv,
int argc )

Definition at line 2476 of file mi-main.c.

References trace_status_mi().

◆ mi_cmd_trace_stop()

void mi_cmd_trace_stop ( const char * command,
const char *const * argv,
int argc )

Definition at line 2482 of file mi-main.c.

References stop_tracing(), and trace_status_mi().

◆ mi_execute_async_cli_command()

void mi_execute_async_cli_command ( const char * cli_command,
const char *const * argv,
int argc )
static

◆ mi_execute_cli_command()

void mi_execute_cli_command ( const char * cmd,
bool args_p,
const char * args )

◆ mi_execute_command() [1/2]

void mi_execute_command ( const char * cmd,
int from_tty )

◆ mi_execute_command() [2/2]

void mi_execute_command ( mi_parse * context)

◆ mi_load_progress()

void mi_load_progress ( const char * section_name,
unsigned long sent_so_far,
unsigned long total_section,
unsigned long total_sent,
unsigned long grand_total )

◆ mi_parse_thread_group_id()

int mi_parse_thread_group_id ( const char * id)

Definition at line 2805 of file mi-main.c.

References ui_out::end().

Referenced by mi_cmd_break_insert_1(), and mi_cmd_remove_inferior().

◆ mi_print_exception()

static void mi_print_exception ( struct mi_interp * mi,
const char * token,
const struct gdb_exception & exception )
static

Definition at line 1898 of file mi-main.c.

References gdb_puts(), ui_file::putstr(), mi_interp::raw_stdout, and token.

Referenced by mi_execute_command().

◆ mi_print_timing_maybe()

void mi_print_timing_maybe ( struct ui_file * file)

◆ output_cores()

static void output_cores ( struct ui_out * uiout,
const char * field_name,
const char * xcores )
static

Definition at line 684 of file mi-main.c.

References collect_cores_data::cores, field_name(), and ui_out::field_string().

Referenced by list_available_thread_groups().

◆ output_register()

static void output_register ( frame_info_ptr frame,
int regnum,
int format,
int skip_unavailable )
static

◆ print_diff()

static void print_diff ( struct ui_file * file,
struct mi_timestamp * start,
struct mi_timestamp * end )
static

Definition at line 2291 of file mi-main.c.

References gdb_printf(), mi_timestamp::stime, mi_timestamp::utime, and mi_timestamp::wallclock.

Referenced by print_diff_now().

◆ print_diff_now()

static void print_diff_now ( struct ui_file * file,
struct mi_timestamp * start )
static

Definition at line 2273 of file mi-main.c.

References print_diff(), and timestamp().

Referenced by mi_print_timing_maybe().

◆ print_one_inferior()

static void print_one_inferior ( struct inferior * inferior,
bool recurse,
const std::set< int > & ids )
static

◆ print_variable_or_computed()

static void print_variable_or_computed ( const char * expression,
enum print_values values )
static

◆ proceed_thread()

static void proceed_thread ( struct thread_info * thread,
int pid )
static

◆ proceed_thread_callback()

static int proceed_thread_callback ( struct thread_info * thread,
void * arg )
static

Definition at line 258 of file mi-main.c.

References pid, and proceed_thread().

Referenced by exec_continue().

◆ register_changed_p()

static bool register_changed_p ( int regnum,
readonly_detached_regcache * prev_regs,
readonly_detached_regcache * this_regs )
static

◆ run_one_inferior()

static void run_one_inferior ( inferior * inf,
bool start_p )
static

◆ set_mi_async_command()

static void set_mi_async_command ( const char * args,
int from_tty,
struct cmd_list_element * c )
static

Definition at line 103 of file mi-main.c.

References have_live_inferiors(), mi_async, and mi_async_1.

◆ show_mi_async_command()

static void show_mi_async_command ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 116 of file mi-main.c.

References gdb_printf().

◆ timestamp()

static void timestamp ( struct mi_timestamp * tv)
static

Variable Documentation

◆ current_command_ts

struct mi_timestamp* current_command_ts
static

Definition at line 77 of file mi-main.c.

Referenced by captured_mi_execute_command(), and mi_print_timing_maybe().

◆ current_context

struct mi_parse* current_context
static

Definition at line 84 of file mi-main.c.

Referenced by exec_continue(), mi_cmd_exec_interrupt(), mi_cmd_exec_run(), and mi_cmd_execute().

◆ do_timings

int do_timings = 0
static

◆ mi_async

bool mi_async = false
static

Definition at line 96 of file mi-main.c.

Referenced by mi_async_p(), mi_cmd_exec_run(), run_one_inferior(), and set_mi_async_command().

◆ mi_async_1

bool mi_async_1 = false
static

Definition at line 100 of file mi-main.c.

Referenced by set_mi_async_command().

◆ mi_debug_p

int mi_debug_p
static