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 "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, char **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, char **argv, int argc)
 
void mi_cmd_exec_next (const char *command, char **argv, int argc)
 
void mi_cmd_exec_next_instruction (const char *command, char **argv, int argc)
 
void mi_cmd_exec_step (const char *command, char **argv, int argc)
 
void mi_cmd_exec_step_instruction (const char *command, char **argv, int argc)
 
void mi_cmd_exec_finish (const char *command, char **argv, int argc)
 
void mi_cmd_exec_return (const char *command, char **argv, int argc)
 
void mi_cmd_exec_jump (const char *args, char **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 (char **argv, int argc)
 
static void exec_reverse_continue (char **argv, int argc)
 
void mi_cmd_exec_continue (const char *command, char **argv, int argc)
 
static int interrupt_thread_callback (struct thread_info *thread, void *arg)
 
void mi_cmd_exec_interrupt (const char *command, char **argv, int argc)
 
static void run_one_inferior (inferior *inf, bool start_p)
 
void mi_cmd_exec_run (const char *command, char **argv, int argc)
 
static int find_thread_of_process (struct thread_info *ti, void *p)
 
void mi_cmd_target_detach (const char *command, char **argv, int argc)
 
void mi_cmd_target_flash_erase (const char *command, char **argv, int argc)
 
void mi_cmd_thread_select (const char *command, char **argv, int argc)
 
void mi_cmd_thread_list_ids (const char *command, char **argv, int argc)
 
void mi_cmd_thread_info (const char *command, char **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, char **argv, int argc)
 
void mi_cmd_data_list_register_names (const char *command, char **argv, int argc)
 
void mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc)
 
void mi_cmd_data_list_register_values (const char *command, char **argv, int argc)
 
void mi_cmd_data_write_register_values (const char *command, char **argv, int argc)
 
void mi_cmd_data_evaluate_expression (const char *command, char **argv, int argc)
 
void mi_cmd_data_read_memory (const char *command, char **argv, int argc)
 
void mi_cmd_data_read_memory_bytes (const char *command, char **argv, int argc)
 
void mi_cmd_data_write_memory (const char *command, char **argv, int argc)
 
void mi_cmd_data_write_memory_bytes (const char *command, char **argv, int argc)
 
void mi_cmd_enable_timings (const char *command, char **argv, int argc)
 
void mi_cmd_list_features (const char *command, char **argv, int argc)
 
void mi_cmd_list_target_features (const char *command, char **argv, int argc)
 
void mi_cmd_add_inferior (const char *command, char **argv, int argc)
 
void mi_cmd_remove_inferior (const char *command, char **argv, int argc)
 
static void captured_mi_execute_command (struct ui_out *uiout, struct mi_parse *context)
 
static void mi_print_exception (const char *token, const struct gdb_exception &exception)
 
void mi_execute_command (const char *cmd, int from_tty)
 
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, char **argv, int argc)
 
void mi_cmd_trace_list_variables (const char *command, char **argv, int argc)
 
void mi_cmd_trace_find (const char *command, char **argv, int argc)
 
void mi_cmd_trace_save (const char *command, char **argv, int argc)
 
void mi_cmd_trace_start (const char *command, char **argv, int argc)
 
void mi_cmd_trace_status (const char *command, char **argv, int argc)
 
void mi_cmd_trace_stop (const char *command, char **argv, int argc)
 
void mi_cmd_ada_task_info (const char *command, char **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, char **argv, int argc)
 
void mi_cmd_fix_multi_location_breakpoint_output (const char *command, char **argv, int argc)
 
void mi_cmd_fix_breakpoint_script_output (const char *command, char **argv, int argc)
 
void mi_cmd_complete (const char *command, char **argv, int argc)
 
void _initialize_mi_main ()
 

Variables

static int mi_debug_p
 
static struct mi_timestampcurrent_command_ts
 
static int do_timings = 0
 
char * current_token
 
static struct mi_parsecurrent_context
 
int running_result_record_printed = 1
 
int mi_proceeded
 
static bool mi_async = false
 
static bool mi_async_1 = false
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FROM_TTY 

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

Function Documentation

◆ _initialize_mi_main()

void _initialize_mi_main ( )

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

Referenced by initialize_all_files().

◆ captured_mi_execute_command()

static void captured_mi_execute_command ( 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 610 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 ( char **  argv,
int  argc 
)
static

◆ exec_reverse_continue()

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

◆ find_thread_of_process()

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

Definition at line 484 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 346 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,
char **  argv,
int  argc 
)

Definition at line 2444 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,
char **  argv,
int  argc 
)

◆ mi_cmd_complete()

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

◆ mi_cmd_data_evaluate_expression()

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

◆ mi_cmd_data_list_changed_registers()

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

◆ mi_cmd_data_list_register_names()

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

◆ mi_cmd_data_list_register_values()

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

◆ mi_cmd_data_read_memory()

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

◆ mi_cmd_data_read_memory_bytes()

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

◆ mi_cmd_data_write_memory()

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

◆ mi_cmd_data_write_memory_bytes()

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

◆ mi_cmd_data_write_register_values()

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

◆ mi_cmd_enable_timings()

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

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

References do_timings.

◆ mi_cmd_exec_continue()

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

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

References exec_continue(), and exec_reverse_continue().

◆ mi_cmd_exec_finish()

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

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

References mi_execute_async_cli_command().

◆ mi_cmd_exec_interrupt()

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

◆ mi_cmd_exec_jump()

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

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

References mi_execute_async_cli_command().

◆ mi_cmd_exec_next()

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

Definition at line 165 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,
char **  argv,
int  argc 
)

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

References mi_execute_async_cli_command().

◆ mi_cmd_exec_return()

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

◆ mi_cmd_exec_run()

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

◆ mi_cmd_exec_step()

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

Definition at line 185 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,
char **  argv,
int  argc 
)

Definition at line 195 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,
char **  argv,
int  argc 
)

Definition at line 2708 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,
char **  argv,
int  argc 
)

Definition at line 2699 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,
char **  argv,
int  argc 
)

◆ mi_cmd_list_features()

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

◆ mi_cmd_list_target_features()

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

◆ mi_cmd_list_thread_groups()

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

◆ mi_cmd_remove_inferior()

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

◆ mi_cmd_target_detach()

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

◆ mi_cmd_target_flash_erase()

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

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

References flash_erase_command().

◆ mi_cmd_thread_info()

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

Definition at line 595 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,
char **  argv,
int  argc 
)

◆ mi_cmd_thread_select()

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

◆ mi_cmd_trace_define_variable()

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

◆ mi_cmd_trace_find()

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

◆ mi_cmd_trace_frame_collected()

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

◆ mi_cmd_trace_list_variables()

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

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

References tvariables_info_1().

◆ mi_cmd_trace_save()

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

Definition at line 2373 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,
char **  argv,
int  argc 
)

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

References start_tracing().

◆ mi_cmd_trace_status()

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

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

References trace_status_mi().

◆ mi_cmd_trace_stop()

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

Definition at line 2435 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,
char **  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()

void mi_execute_command ( const char *  cmd,
int  from_tty 
)

◆ 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_print_exception()

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

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

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

Referenced by mi_execute_command().

◆ mi_print_timing_maybe()

void mi_print_timing_maybe ( struct ui_file file)

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

References current_command_ts, do_timings, and print_diff_now().

Referenced by captured_mi_execute_command(), and mi_on_normal_stop_1().

◆ output_cores()

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

Definition at line 680 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 2246 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 2228 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 255 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 109 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 122 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 76 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().

◆ current_token

char* current_token

◆ do_timings

int do_timings = 0
static

◆ mi_async

bool mi_async = false
static

Definition at line 102 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 106 of file mi-main.c.

Referenced by set_mi_async_command().

◆ mi_debug_p

int mi_debug_p
static

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

Referenced by captured_mi_execute_command(), and mi_execute_cli_command().

◆ mi_proceeded

int mi_proceeded

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

Referenced by captured_mi_execute_command(), mi_about_to_proceed(), and mi_on_resume_1().

◆ running_result_record_printed

int running_result_record_printed = 1

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

Referenced by captured_mi_execute_command(), and mi_on_resume_1().