// Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) //////////////////////////////// //~ rjf: Config Sources @table(string, name, load_cmd, write_cmd, apply_cmd) D_CfgSrcTable: { {"user" User OpenUser WriteUserData ApplyUserData } {"project" Project OpenProject WriteProjectData ApplyProjectData } {"command_line" CommandLine Null Null Null } {"transient" Transient Null Null Null } } //////////////////////////////// //~ rjf: Entity Kind Tables @table(name name_lower name_lower_plural op_delete op_freeze op_edit op_rename op_enable op_cond op_dup name_is_code name_is_path user_lifetime is_serialized name_label icon_kind display_string) // | | // | _____________________________________________________________________________________________________________________________________/ // | / // operations________ names lt sz // /..................\ /...\ | | // dl fz ed rn en cn dp nc np ul iz D_EntityKindTable: { {Nil nil nils 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Nil" } {Root root roots 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Root" } //- rjf: machines {Machine machine machines 0 1 0 1 0 0 0 0 0 0 0 "Label" Machine "Machine" } //- rjf: filesystem modeling {File file files 0 0 0 0 0 0 0 0 0 0 0 "Label" FileOutline "File" } //- rjf: auto view rules {AutoViewRule auto_view_rule auto_view_rules 0 0 0 0 0 0 0 0 0 1 1 "Label" Binoculars "Auto View Rule" } //- rjf: file path maps {FilePathMap file_path_map file_path_maps 0 0 0 0 0 0 0 0 0 0 1 "Label" FileOutline "File Path Map" } //- rjf: watch pins {WatchPin watch_pin watch_pins 1 0 0 1 0 0 1 1 0 1 1 "Expression" Pin "Watch Pin" } //- rjf: watches {Watch watch watches 1 0 0 1 1 0 1 1 0 1 1 "Expression" Binoculars "Watch" } {ViewRule view_rule view_rules 1 0 0 1 1 0 1 1 0 1 0 "Expression" Binoculars "View Rule" } //- rjf: breakpoints {Breakpoint breakpoint breakpoints 1 0 0 1 1 1 1 0 0 1 1 "Label" CircleFilled "Breakpoint" } {Condition condition conditions 0 0 0 0 0 0 0 1 0 1 0 "Expression" CircleFilled "Condition" } //- rjf: user-controlled locations (source, addresses, symbol names) {Location location locations 0 0 0 0 0 0 0 1 1 1 0 "Location" Null "Location" } //- rjf: targets {Target target targets 1 0 1 1 1 0 1 0 0 1 1 "Label" Target "Target" } {Executable executable executables 0 0 0 0 0 0 0 0 1 1 0 "Executable" Null "Executable" } {Arguments arguments argumentses 0 0 0 0 0 0 0 0 0 1 0 "Arguments" Null "Arguments" } {WorkingDirectory working_directory working_directories 0 0 0 0 0 0 0 0 1 1 0 "Execution Path" Null "Working Directory" } {EntryPoint entry_point entry_points 0 0 0 0 0 0 0 0 0 1 0 "Symbol Name" Null "Entry Point" } //- rjf: frontend containers (windows, panels, views) {Window window windows 1 0 0 0 0 0 1 0 0 1 1 "Label" Window "Window" } {Panel panel panels 1 0 0 0 0 0 1 0 0 1 1 "Label" XSplit "Panel" } {View view views 1 0 0 0 0 0 1 0 0 1 1 "Label" Null "View" } //- rjf: recent projects {RecentProject recent_project recent_projects 0 0 0 0 0 0 0 0 1 0 1 "Path" Briefcase "Recent Project" } //- rjf: src -> dst mapping {Source source sources 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Source" } {Dest dest dests 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Destination" } //- rjf: control system entities {Process process processes 0 1 0 1 0 0 0 0 0 0 0 "Label" Threads "Process" } {Thread thread threads 0 1 0 1 0 0 0 0 0 0 0 "Label" Thread "Thread" } {Module module modules 0 0 0 0 0 0 0 0 0 0 0 "Label" Module "Module" } {PendingThreadName pending_thread_name pending_thread_names 0 0 0 0 0 0 0 0 0 0 0 "Label" Threads "Pending Thread Name" } {DebugInfoPath debug_info_path debug_info_paths 0 0 0 0 0 0 0 0 0 0 0 "Label" Module "Debug Info Path" } //- rjf: parser task entities {ConversionTask conversion_task conversion_tasks 0 0 0 1 0 0 0 0 0 0 0 "Label" Null "Conversion Task" } {ConversionFail conversion_fail conversion_fails 0 0 0 1 0 0 0 0 0 0 0 "Label" Null "Conversion Failure" } //- rjf: history {EndedProcess ended_process ended_processes 1 0 0 1 0 0 0 0 0 0 0 "Label" Null "EndedProcess" } } //////////////////////////////// //~ rjf: Registers Type Table @table(c_type name_lower name) D_RegTable: { // rjf: entity slots {D_Handle machine Machine } {D_Handle module Module } {D_Handle process Process } {D_Handle thread Thread } {D_Handle window Window } {D_Handle panel Panel } {D_Handle view View } {D_Handle prev_view PrevView } {D_Handle dst_panel DstPanel } {D_Handle entity Entity } {D_HandleList entity_list EntityList } // rjf: frame selection {U64 unwind_count UnwindCount } {U64 inline_depth InlineDepth } // rjf: code / address location info {String8 file_path FilePath } {TxtPt cursor Cursor } {TxtPt mark Mark } {U128 text_key TextKey } {TXT_LangKind lang_kind LangKind } {D_LineList lines Lines } {DI_Key dbgi_key DbgiKey } {Rng1U64 vaddr_range VaddrRange } {Rng1U64 voff_range VoffRange } // rjf: general parameters {U32 pid PID } {B32 force_confirm ForceConfirm } {B32 prefer_disasm PreferDisasm } {Dir2 dir2 Dir2 } {String8 string String } {`MD_Node *` params_tree ParamsTree } } @enum D_RegSlot: { Null, @expand(D_RegTable a) `$(a.name)`, COUNT, } @struct D_Regs: { @expand(D_RegTable a) `$(a.c_type) $(a.name_lower)` } @data(Rng1U64) d_reg_slot_range_table: { `{0}`, @expand(D_RegTable a) `{OffsetOf(D_Regs, $(a.name_lower)), OffsetOf(D_Regs, $(a.name_lower)) + sizeof($(a.c_type))}` } @gen { `#define d_regs_lit_init_top \\` @expand(D_RegTable a) `.$(a.name_lower) = d_regs()->$(a.name_lower),\\` ``; } //////////////////////////////// //~ rjf: Message Tables @table(name name_display name_lower show_in_ui show_in_ipc_docs q_slot q_ent_kind q_allow_files q_allow_folders q_keep_oi q_select_oi q_is_code q_required canonical_icon desc) D_MsgKindTable: { {Null "" null 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: low level target operations {LaunchAndRun "Launch And Run" launch_and_run 0 0 Null Nil 0 0 0 0 0 0 Null ""} {LaunchAndStepInto "Launch And Step Into" launch_and_step_into 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Kill "Kill" kill 0 0 Null Nil 0 0 0 0 0 0 Null ""} {KillAll "Kill All" kill_all 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Attach "Attach" attach 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Detach "Detach" detach 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Continue "Continue" continue 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepIntoInst "Step Into Inst" step_into_inst 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepOverInst "Step Over Inst" step_over_inst 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepIntoLine "Step Into Line" step_into_line 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepOverLine "Step Over Line" step_over_line 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepOut "Step Out" step_out 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Halt "Halt" halt 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SoftHaltRefresh "Soft Halt Refresh" soft_halt_refresh 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SetThreadIP "Set Thread IP" set_thread_ip 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: high level target operations {RunToLine "Run To Line" run_to_line 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RunToAddress "Run To Address" run_to_address 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Run "Run" run 0 0 Null Nil 0 0 0 0 0 0 Null ""} {Restart "Restart" restart 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepInto "Step Into" step_into 0 0 Null Nil 0 0 0 0 0 0 Null ""} {StepOver "Step Over" step_over 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: thread / frame selection {SelectThread "Select Thread" select_thread 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SelectUnwind "Select Unwind" select_unwind 0 0 Null Nil 0 0 0 0 0 0 Null ""} {UpOneFrame "Up One Frame" up_one_frame 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DownOneFrame "Down One Frame" down_one_frame 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: thread freezing/thawing {FreezeThread "Freeze Thread" freeze_thread 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ThawThread "Thaw Thread" thaw_thread 0 0 Null Nil 0 0 0 0 0 0 Null ""} {FreezeProcess "Freeze Process" freeze_process 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ThawProcess "Thaw Process" thaw_process 0 0 Null Nil 0 0 0 0 0 0 Null ""} {FreezeMachine "Freeze Machine" freeze_machine 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ThawMachine "Thaw Machine" thaw_machine 0 0 Null Nil 0 0 0 0 0 0 Null ""} {FreezeLocalMachine "Freeze Local Machine" freeze_local_machine 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ThawLocalMachine "Thaw Local Machine" thaw_local_machine 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: path overrides {SetPathMapSrc "Set Path Map Source" set_path_map_src 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SetPathMapDst "Set Path Map Destination" set_path_map_dst 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SetFileReplacementPath "Set File Replacement Path" set_file_replacement_path 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: auto view rules {SetAutoViewRuleType "Set Auto View Rule Type" set_auto_view_rule_type 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SetAutoViewRuleViewRule "Set Auto View Rule View Rule" set_auto_view_rule_view_rule 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: general entity operations {EnableEntity "Enable Entity" enable_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {EnableBreakpoint "Enable Breakpoint" enable_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {EnableTarget "Enable Target" enable_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DisableEntity "Disable Entity" disable_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DisableBreakpoint "Disable Breakpoint" disable_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DisableTarget "Disable Target" disable_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} {FreezeEntity "Freeze Entity" freeze_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ThawEntity "Thaw Entity" thaw_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RemoveEntity "Remove Entity" remove_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RemoveBreakpoint "Remove Breakpoint" remove_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RemoveTarget "Remove Target" remove_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} {NameEntity "Name Entity" name_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DuplicateEntity "Duplicate Entity" duplicate_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RelocateEntity "Relocate Entity" relocate_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: breakpoints {AddBreakpoint "Add Breakpoint" add_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ToggleBreakpoint "Toggle Breakpoint" toggle_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {AddAddressBreakpoint "Add Address Breakpoint" add_address_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {AddFunctionBreakpoint "Add Function Breakpoint" add_function_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: watch pins {AddWatchPin "Add Watch Pin" add_watch_pin 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ToggleWatchPin "Toggle Watch Pin" toggle_watch_pin 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: watch expressions {ToggleWatchExpression "Toggle Watch Expression" toggle_watch_expression 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: at-cursor operations {ToggleBreakpointAtCursor "Toggle Breakpoint At Cursor" toggle_breakpoint_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ToggleWatchPinAtCursor "Toggle Watch Pin At Cursor" toggle_watch_pin_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ToggleWatchExpressionAtCursor "Toggle Watch Expression At Cursor" toggle_watch_expression_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} {GoToNameAtCursor "Go To Name At Cursor" go_to_name_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RunToCursor "Run To Cursor" run_to_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SetNextStatement "Set Next Statement" set_next_statement 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: targets {AddTarget "Add Target" add_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} {SelectTarget "Select Target" select_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RetryEndedProcess "Retry Ended Process" retry_ended_process 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: meta {RegisterAsJITDebugger "Register As JIT Debugger" register_as_jit_debugger 0 0 Null Nil 0 0 0 0 0 0 Null ""} {LogMarker "Log Marker" log_marker 0 0 Null Nil 0 0 0 0 0 0 Null ""} } @enum D_MsgKind: { @expand(D_MsgKindTable a) `$(a.name)`, COUNT } @data(String8) d_msg_kind_name_lower_table: { @expand(D_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")` } @data(String8) d_msg_kind_name_display_table: { @expand(D_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")` } //////////////////////////////// //~ rjf: Built-In Command Tables @table(name, name_lower, c_type) D_CmdParamSlotTable: { {Window window `D_Handle`} {Panel panel `D_Handle`} {DestPanel dest_panel `D_Handle`} {PrevView prev_view `D_Handle`} {View view `D_Handle`} {Entity entity `D_Handle`} {EntityList entity_list `D_HandleList`} {String string `String8`} {FilePath file_path `String8`} {TextPoint text_point `TxtPt`} {CmdSpec cmd_spec `struct D_CmdSpec *`} {ViewSpec view_spec `struct DF_ViewSpec *`} {ParamsTree params_tree `MD_Node *`} {OSEvent os_event `struct OS_Event *`} {VirtualAddr vaddr `U64`} {VirtualOff voff `U64`} {Index index `U64`} {ID id `U64`} {PreferDisassembly prefer_dasm `B32`} {ForceConfirm force_confirm `B32`} {Dir2 dir2 `Dir2`} {UnwindIndex unwind_index `U64`} {InlineDepth inline_depth `U64`} } @table(name ui_vis ipc_docs_vis q_slot q_ent_kind q_allow_files q_allow_folders q_keep_oi q_select_oi q_is_code q_required canonical_icon string display_name desc search_tags ) // / | | | \___ ______________________________________________/ | | | | | // / | | | \ / | | | | | D_CoreCmdTable: // | | | | | | | | | | { {Null 0 0 Null Nil 0 0 0 0 0 0 Null "" "" "" "" } //- rjf: exiting {Exit 1 1 Null Nil 0 0 0 0 0 0 X "exit" "Exit" "Exits the debugger." "quit,close,abort" } //- rjf: command runner {RunCommand 1 1 CmdSpec Nil 0 0 0 0 0 1 Null "run_command" "Run Command" "Runs a command from the command palette." "help,cmd" } //- rjf: notifications {Error 0 1 Null Nil 0 0 0 0 0 0 Null "error" "Error" "Notifies of an error." "" } //- rjf: os event passthrough {OSEvent 0 0 Null Nil 0 0 0 0 0 0 Null "os_event" "OS Event" "" "" } //- rjf: low-level target control operations {LaunchAndRun 1 1 EntityList Target 0 0 0 0 0 1 Play "launch_and_run" "Launch and Run" "Starts debugging a new instance of a target, then runs." "launch,start,run,target" } {LaunchAndInit 1 1 EntityList Target 0 0 0 0 0 1 PlayStepForward "launch_and_init" "Launch and Initialize" "Starts debugging a new instance of a target, then stops at the program's entry point." "launch,start,entry,point" } {Kill 1 1 EntityList Process 0 0 0 0 0 1 Stop "kill" "Kill" "Kills the specified existing debugged process(es)." "stop,kill" } {KillAll 1 1 Null Nil 0 0 0 0 0 0 Stop "kill_all" "Kill All" "Kills all debugged child processes." "stop,kill,all" } {Detach 1 1 EntityList Process 0 0 0 0 0 1 Null "detach" "Detach" "Detaches the specified debugged process." "detach" } {Continue 1 1 Null Nil 0 0 0 0 0 0 Play "continue" "Continue" "Continues all halted threads." "" } {StepIntoInst 1 1 Null Nil 0 0 0 0 0 0 StepInto "step_into_inst" "Step Into (Assembly)" "Performs a step that goes into calls, at the instruction level." "single,step,thread" } {StepOverInst 1 1 Null Nil 0 0 0 0 0 0 StepOver "step_over_inst" "Step Over (Assembly)" "Performs a step that skips calls, at the instruction level." "single,step,thread" } {StepIntoLine 1 1 Null Nil 0 0 0 0 0 0 StepInto "step_into_line" "Step Into (Line)" "Performs a step that goes into calls, at the source code line level." "step,thread" } {StepOverLine 1 1 Null Nil 0 0 0 0 0 0 StepOver "step_over_line" "Step Over (Line)" "Performs a step that skips calls, at the source code line level." "step,thread" } {StepOut 1 1 Null Nil 0 0 0 0 0 0 StepOut "step_out" "Step Out" "Runs to the end of the current function and exits it." "" } {Halt 1 1 Null Nil 0 0 0 0 0 0 Pause "halt" "Halt" "Halts all running processes." "pause" } {SoftHaltRefresh 1 1 Null Nil 0 0 0 0 0 0 Refresh "soft_halt_refresh" "Soft Halt Refresh" "Interrupts all running processes to collect data, and then resumes them." "" } {SetThreadIP 0 1 VirtualAddr Nil 0 0 0 0 1 1 Null "set_thread_ip" "Set Thread IP" "Sets the passed thread's instruction pointer at the passed address." "" } //- rjf: high-level composite target control operations {RunToLine 0 1 Null Nil 0 0 0 0 0 0 Play "run_to_line" "Run To Line" "Runs until a particular source line is hit." "" } {RunToAddress 1 1 VirtualAddr Nil 0 0 0 0 1 1 PlayStepForward "run_to_address" "Run To Address" "Runs until a particular address is hit." "" } {Run 1 1 Null Nil 0 0 0 0 0 0 Play "run" "Run" "Runs all targets after starting them if they have not been started yet." "play" } {Restart 1 1 Null Nil 0 0 0 0 0 0 Redo "restart" "Restart" "Kills all running processes, then restarts the targets which were used to launch all current processes (if any)." "restart,retry" } {StepInto 1 1 Null Nil 0 0 0 0 0 0 StepInto "step_into" "Step Into" "Steps once, possibly into function calls, for either line or instructions." "" } {StepOver 1 1 Null Nil 0 0 0 0 0 0 StepOver "step_over" "Step Over" "Steps once, always over function calls, for either line or instructions." "" } {RunToCursor 1 1 Null Nil 0 0 0 0 0 0 Play "run_to_cursor" "Run To Cursor" "Runs the selected thread to the current cursor." "line" } {SetNextStatement 1 1 Null Nil 0 0 0 0 0 0 RightArrow "set_next_statement" "Set Next Statement" "Sets the selected thread's instruction pointer to the cursor's position." "" } //- rjf: debug control context management operations {SelectThread 1 1 Entity Thread 0 0 0 0 0 1 Null "select_thread" "Select Thread" "Selects a thread." "" } {SelectUnwind 0 1 Null Nil 0 0 0 0 0 0 Null "select_unwind" "Select Unwind" "Selects an unwind frame number for the selected thread." "" } {UpOneFrame 1 1 Null Nil 0 0 0 0 0 0 UpArrow "up_one_frame" "Up One Frame" "Selects the call stack frame above the currently selected." "" } {DownOneFrame 1 1 Null Nil 0 0 0 0 0 0 DownArrow "down_one_frame" "Down One Frame" "Selects the call stack frame below the currently selected." "callstack,unwind" } {FreezeThread 1 1 Entity Thread 0 0 0 0 0 1 Locked "freeze_thread" "Freeze Thread" "Freezes the passed thread." "callstack,unwind" } {ThawThread 1 1 Entity Thread 0 0 0 0 0 1 Unlocked "thaw_thread" "Thaw Thread" "Thaws the passed thread." "" } {FreezeProcess 1 1 Entity Process 0 0 0 0 0 1 Locked "freeze_process" "Freeze Process" "Freezes the passed process." "" } {ThawProcess 1 1 Entity Process 0 0 0 0 0 1 Unlocked "thaw_process" "Thaw Process" "Thaws the passed process." "" } {FreezeMachine 0 1 Entity Machine 0 0 0 0 0 1 Locked "freeze_machine" "Freeze Machine" "Freezes the passed machine." "" } {ThawMachine 0 1 Entity Machine 0 0 0 0 0 1 Unlocked "thaw_machine" "Thaw Machine" "Thaws the passed machine." "" } {FreezeLocalMachine 1 1 Null Nil 0 0 0 0 0 0 Machine "freeze_local_machine" "Freeze Local Machine" "Freezes the local machine." "" } {ThawLocalMachine 1 1 Null Nil 0 0 0 0 0 0 Machine "thaw_local_machine" "Thaw Local Machine" "Thaws the local machine." "" } //- rjf: font sizes {IncUIFontScale 1 1 Null Nil 0 0 0 0 0 0 Null "inc_ui_font_scale" "Increase UI Font Scale" "Increases the font size used for UI." "" } {DecUIFontScale 1 1 Null Nil 0 0 0 0 0 0 Null "dec_ui_font_scale" "Decrease UI Font Scale" "Decreases the font size used for UI." "" } {IncCodeFontScale 1 1 Null Nil 0 0 0 0 0 0 Null "inc_code_font_scale" "Increase Code Font Scale" "Increases the font size used for code." "" } {DecCodeFontScale 1 1 Null Nil 0 0 0 0 0 0 Null "dec_code_font_scale" "Decrease Code Font Scale" "Decreases the font size used for code." "" } //- rjf: windows {OpenWindow 1 1 Null Nil 0 0 0 0 0 0 Window "open_window" "Open New Window" "Opens a new window." "" } {CloseWindow 1 1 Null Nil 0 0 0 0 0 0 Window "close_window" "Close Window" "Closes an opened window." "" } {ToggleFullscreen 1 1 Null Nil 0 0 0 0 0 0 Window "toggle_fullscreen" "Toggle Fullscreen" "Toggles fullscreen view on the active window." "" } //- rjf: confirmations {ConfirmAccept 0 1 Null Nil 0 0 0 0 0 0 Null "confirm_accept" "Confirm Accept" "Accepts the active confirmation prompt." "" } {ConfirmCancel 0 1 Null Nil 0 0 0 0 0 0 Null "confirm_cancel" "Confirm Cancel" "Cancels the active confirmation prompt." "" } //- rjf: panel splitting {ResetToDefaultPanels 1 1 Null Nil 0 0 0 0 0 0 Window "reset_to_default_panels" "Reset To Default Panel Layout" "Resets the window to the default panel layout." "panel" } {ResetToCompactPanels 1 1 Null Nil 0 0 0 0 0 0 Window "reset_to_compact_panels" "Reset To Compact Panel Layout" "Resets the window to the compact panel layout." "panel" } {NewPanelLeft 1 1 Null Nil 0 0 0 0 0 0 XSplit "new_panel_left" "Split Panel Left" "Creates a new panel to the left of the active panel." "panel" } {NewPanelUp 1 1 Null Nil 0 0 0 0 0 0 YSplit "new_panel_up" "Split Panel Up" "Creates a new panel at the top of the active panel." "panel" } {NewPanelRight 1 1 Null Nil 0 0 0 0 0 0 XSplit "new_panel_right" "Split Panel Right" "Creates a new panel to the right of the active panel." "panel" } {NewPanelDown 1 1 Null Nil 0 0 0 0 0 0 YSplit "new_panel_down" "Split Panel Down" "Creates a new panel at the bottom of the active panel." "panel" } {SplitPanel 0 0 Null Nil 0 0 0 0 0 0 Null "split_panel" "Split Panel" "Creates a new panel in a given direction, and moves a tab to it, if specified." "" } //- rjf: panel rotation {RotatePanelColumns 1 1 Null Nil 0 0 0 0 0 0 Null "rotate_panel_columns" "Rotate Panel Columns" "Rotates all panels at the closest column level of the panel hierarchy." "" } //- rjf: focused panel changing {NextPanel 1 1 Null Nil 0 0 0 0 0 0 RightArrow "next_panel" "Focus Next Panel" "Cycles the active panel forward." "" } {PrevPanel 1 1 Null Nil 0 0 0 0 0 0 LeftArrow "prev_panel" "Focus Previous Panel" "Cycles the active panel backwards." "" } {FocusPanel 0 0 Null Nil 0 0 0 0 0 0 Null "focus_panel" "Focus Panel" "Focuses a new panel." "" } {FocusPanelRight 1 1 Null Nil 0 0 0 0 0 0 RightArrow "focus_panel_right" "Focus Panel Right" "Focuses a panel rightward of the currently focused panel." "" } {FocusPanelLeft 1 1 Null Nil 0 0 0 0 0 0 LeftArrow "focus_panel_left" "Focus Panel Left" "Focuses a panel leftward of the currently focused panel." "" } {FocusPanelUp 1 1 Null Nil 0 0 0 0 0 0 UpArrow "focus_panel_up" "Focus Panel Up" "Focuses a panel upward of the currently focused panel." "" } {FocusPanelDown 1 1 Null Nil 0 0 0 0 0 0 DownArrow "focus_panel_down" "Focus Panel Down" "Focuses a panel downward of the currently focused panel." "" } //- rjf: undo/redo {Undo 1 1 Null Nil 0 0 0 0 0 0 Undo "undo" "Undo" "Undoes the previous action." "" } {Redo 1 1 Null Nil 0 0 0 0 0 0 Redo "redo" "Redo" "Redoes the first previously undone action." "" } //- rjf: focus history {GoBack 1 1 Null Nil 0 0 0 0 0 0 LeftArrow "go_back" "Go Back" "Returns to the previously selected panel and tab in recorded history." "" } {GoForward 1 1 Null Nil 0 0 0 0 0 0 RightArrow "go_forward" "Go Forward" "Returns to the next selected panel and tab in recorded history." "" } //- rjf: panel removal {ClosePanel 1 1 Null Nil 0 0 0 0 0 0 ClosePanel "close_panel" "Close Panel" "Closes the currently active panel." "" } //- rjf: panel tab {NextTab 1 1 Null Nil 0 0 0 0 0 0 RightArrow "next_tab" "Focus Next Tab" "Focuses the next tab on the active panel." "" } {PrevTab 1 1 Null Nil 0 0 0 0 0 0 LeftArrow "prev_tab" "Focus Previous Tab" "Focuses the previous tab on the active panel." "" } {MoveTabRight 1 1 Null Nil 0 0 0 0 0 0 RightArrow "move_tab_right" "Move Tab Right" "Moves the selected tab right one slot." "" } {MoveTabLeft 1 1 Null Nil 0 0 0 0 0 0 LeftArrow "move_tab_left" "Move Tab Left" "Moves the selected tab left one slot." "" } {OpenTab 0 0 Null Nil 0 0 0 0 0 0 Null "open_tab" "Open Tab" "Opens a new tab with the parameterized view specification." "" } {CloseTab 1 1 Null Nil 0 0 0 0 0 0 X "close_tab" "Close Tab" "Closes the currently opened tab." "" } {MoveTab 0 0 Null Nil 0 0 0 0 0 0 Null "move_tab" "Move Tab" "Moves a tab to a new panel." "" } {TabBarTop 1 1 Null Nil 0 0 0 0 0 0 UpArrow "tab_bar_top" "Anchor Tab Bar To Top" "Anchors a panel's tab bar to the top of the panel." "" } {TabBarBottom 1 1 Null Nil 0 0 0 0 0 0 DownArrow "tab_bar_bottom" "Anchor Tab Bar To Bottom" "Anchors a panel's tab bar to the bottom of the panel." "" } //- rjf: files {SetCurrentPath 0 1 Null Nil 0 0 0 0 0 0 FileOutline "set_current_path" "Set Current Path" "Sets the debugger's current path, which is used as a starting point when browsing for files." "" } {Open 1 1 FilePath Nil 1 0 0 0 0 1 FileOutline "open" "Open" "Opens a file." "code,source,file" } {Switch 1 1 Entity File 0 0 0 0 0 1 FileOutline "switch" "Switch" "Switches to a loaded file." "code,source,file" } {SwitchToPartnerFile 1 1 Null Nil 0 0 0 0 0 0 FileOutline "switch_to_partner_file" "Switch To Partner File" "Switches to the focused file's partner; or from header to implementation or vice versa." "code,source,file" } //- rjf: source <-> disasm {GoToDisassembly 1 1 Null Nil 0 0 0 0 0 0 Glasses "go_to_disassembly" "Go To Disassembly" "Goes to the disassembly, if any, for a given source code line." "code,source,disassembly,disasm" } {GoToSource 1 1 Null Nil 0 0 0 0 0 0 FileOutline "go_to_source" "Go To Source" "Goes to the source code, if any, for a given disassembly line." "code,source,disassembly,disasm" } //- rjf: override file links {SetFileOverrideLinkSrc 0 0 Null Nil 0 0 0 0 0 0 Null "set_file_override_link_src" "Set File Override Link Source" "Sets the source path for an override file link." "" } {SetFileOverrideLinkDst 0 0 Null Nil 0 0 0 0 0 0 Null "set_file_override_link_dst" "Set File Override Link Destination" "Sets the destination path for an override file link." "" } {SetFileReplacementPath 0 0 Null Nil 0 0 0 0 0 0 Null "set_file_replacement_path" "Set File Replacement Path" "Sets the path which should be used as the replacement for the passed file." "" } //- rjf: auto view rules {SetAutoViewRuleType 0 0 Null Nil 0 0 0 0 0 0 Null "set_auto_view_rule_type" "Set Auto View Rule Type" "Sets the type for an auto view rule." "" } {SetAutoViewRuleViewRule 0 0 Null Nil 0 0 0 0 0 0 Null "set_auto_view_rule_view_rule""Set Auto View Rule View Rule" "Sets the view rule string for an auto view rule." "" } //- rjf: setting config paths {OpenUser 1 1 FilePath Nil 1 0 0 0 0 1 Person "open_user" "Open User" "Opens a user file path, immediately loading it, and begins autosaving to it." "load,user,project,layout" } {OpenProject 1 1 FilePath Nil 1 0 0 0 0 1 Briefcase "open_project" "Open Project" "Opens a project file path, immediately loading it, and begins autosaving to it." "project,project,session" } {OpenRecentProject 1 1 Entity RecentProject 0 0 0 0 0 1 Briefcase "open_recent_project" "Open Recent Project" "Opens a recently used project file." "project,project,session" } //- rjf: loading/applying stateful config changes {ApplyUserData 0 0 Null Nil 0 0 0 0 0 0 Null "apply_user_data" "Apply User Data" "Applies user data from the active user file." "" } {ApplyProjectData 0 0 Null Nil 0 0 0 0 0 0 Null "apply_project_data" "Apply Project Data" "Applies project data from the active project file." "" } //- rjf: writing config changes {WriteUserData 0 1 Null Nil 0 0 0 0 0 0 Null "write_user_data" "Write User Data" "Writes user data to the active user file." "" } {WriteProjectData 0 1 Null Nil 0 0 0 0 0 0 Null "write_project_data" "Write Project Data" "Writes project data to the active project file." "" } //- rjf: meta controls {Edit 1 1 Null Nil 0 0 0 0 0 0 Pencil "edit" "Edit" "Edits the current selection." "" } {Accept 1 1 Null Nil 0 0 0 0 0 0 CheckFilled "accept" "Accept" "Accepts current changes, or answers prompts in the affirmative." "" } {Cancel 1 1 Null Nil 0 0 0 0 0 0 X "cancel" "Cancel" "Rejects current changes, exits temporary menus, or answers prompts in the negative." "" } //- rjf: directional movement & text controls {MoveLeft 1 1 Null Nil 0 0 0 0 0 0 Null "move_left" "Move Left" "Moves the cursor or selection left." "" } {MoveRight 1 1 Null Nil 0 0 0 0 0 0 Null "move_right" "Move Right" "Moves the cursor or selection right." "" } {MoveUp 1 1 Null Nil 0 0 0 0 0 0 Null "move_up" "Move Up" "Moves the cursor or selection up." "" } {MoveDown 1 1 Null Nil 0 0 0 0 0 0 Null "move_down" "Move Down" "Moves the cursor or selection down." "" } {MoveLeftSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_left_select" "Move Left Select" "Moves the cursor or selection left, while selecting." "" } {MoveRightSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_right_select" "Move Right Select" "Moves the cursor or selection right, while selecting." "" } {MoveUpSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_select" "Move Up Select" "Moves the cursor or selection up, while selecting." "" } {MoveDownSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_select" "Move Down Select" "Moves the cursor or selection down, while selecting." "" } {MoveLeftChunk 1 1 Null Nil 0 0 0 0 0 0 Null "move_left_chunk" "Move Left Select" "Moves the cursor or selection left one chunk." "" } {MoveRightChunk 1 1 Null Nil 0 0 0 0 0 0 Null "move_right_chunk" "Move Right Select" "Moves the cursor or selection right one chunk." "" } {MoveUpChunk 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_chunk" "Move Up Chunk" "Moves the cursor or selection up one chunk." "" } {MoveDownChunk 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_chunk" "Move Down Chunk" "Moves the cursor or selection down one chunk." "" } {MoveUpPage 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_page" "Move Up Page" "Moves the cursor or selection up one page." "" } {MoveDownPage 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_page" "Move Down Page" "Moves the cursor or selection down one page." "" } {MoveUpWhole 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_whole" "Move Up Whole" "Moves the cursor or selection to the beginning of the relevant content." "" } {MoveDownWhole 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_whole" "Move Down Whole" "Moves the cursor or selection to the end of the relevant content." "" } {MoveLeftChunkSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_left_chunk_select" "Move Left Chunk Select" "Moves the cursor or selection left one chunk." "" } {MoveRightChunkSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_right_chunk_select" "Move Right Chunk Select" "Moves the cursor or selection right one chunk." "" } {MoveUpChunkSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_chunk_select" "Move Up Chunk Select" "Moves the cursor or selection up one chunk." "" } {MoveDownChunkSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_chunk_select" "Move Down Chunk Select" "Moves the cursor or selection down one chunk." "" } {MoveUpPageSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_page_select" "Move Up Page Select" "Moves the cursor or selection up one page, while selecting." "" } {MoveDownPageSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_page_select" "Move Down Page Select" "Moves the cursor or selection down one page, while selecting." "" } {MoveUpWholeSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_whole_select" "Move Up Whole Select" "Moves the cursor or selection to the beginning of the relevant content, while selecting." "" } {MoveDownWholeSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_whole_select" "Move Down Whole Select" "Moves the cursor or selection to the end of the relevant content, while selecting." "" } {MoveUpReorder 1 1 Null Nil 0 0 0 0 0 0 Null "move_up_reorder" "Move Up Reorder" "Moves the cursor or selection up, while swapping the currently selected element with that upward." "" } {MoveDownReorder 1 1 Null Nil 0 0 0 0 0 0 Null "move_down_reorder" "Move Down Reorder" "Moves the cursor or selection down, while swapping the currently selected element with that downward." "" } {MoveHome 1 1 Null Nil 0 0 0 0 0 0 Null "move_home" "Move Home" "Moves the cursor to the beginning of the line." "" } {MoveEnd 1 1 Null Nil 0 0 0 0 0 0 Null "move_end" "Move End" "Moves the cursor to the end of the line." "" } {MoveHomeSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_home_select" "Move Home Select" "Moves the cursor to the beginning of the line, while selecting." "" } {MoveEndSelect 1 1 Null Nil 0 0 0 0 0 0 Null "move_end_select" "Move End Select" "Moves the cursor to the end of the line, while selecting." "" } {SelectAll 1 1 Null Nil 0 0 0 0 0 0 Null "select_all" "Select All" "Selects everything possible." "" } {DeleteSingle 1 1 Null Nil 0 0 0 0 0 0 Null "delete_single" "Delete Single" "Deletes a single element to the right of the cursor, or the active selection." "" } {DeleteChunk 1 1 Null Nil 0 0 0 0 0 0 Null "delete_chunk" "Delete Chunk" "Deletes a chunk to the right of the cursor, or the active selection." "" } {BackspaceSingle 1 1 Null Nil 0 0 0 0 0 0 Null "backspace_single" "Backspace Single" "Deletes a single element to the left of the cursor, or the active selection." "" } {BackspaceChunk 1 1 Null Nil 0 0 0 0 0 0 Null "backspace_chunk" "Backspace Chunk" "Deletes a chunk to the left of the cursor, or the active selection." "" } {Copy 1 1 Null Nil 0 0 0 0 0 0 Clipboard "copy" "Copy" "Copies the active selection to the clipboard." "" } {Cut 1 1 Null Nil 0 0 0 0 0 0 Clipboard "cut" "Cut" "Copies the active selection to the clipboard, then deletes it." "" } {Paste 1 1 Null Nil 0 0 0 0 0 0 Clipboard "paste" "Paste" "Pastes the current contents of the clipboard." "" } {InsertText 0 1 Null Nil 0 0 0 0 0 0 Null "insert_text" "Insert Text" "Inserts the text that was used to cause this command." "" } //- rjf: code navigation {GoToLine 1 1 TextPoint Nil 0 0 0 0 1 1 Null "goto_line" "Go To Line" "Jumps to a line number in the current code file." "" } {GoToAddress 1 1 VirtualAddr Nil 0 0 0 0 1 1 Null "goto_address" "Go To Address" "Jumps to an address in the current memory or disassembly view." "" } {CenterCursor 1 1 Null Nil 0 0 0 0 0 0 Null "center_cursor" "Center Cursor" "Snaps the current code view to center the cursor." "" } {ContainCursor 1 1 Null Nil 0 0 0 0 0 0 Null "contain_cursor" "Contain Cursor" "Snaps the current code view to contain the cursor." "" } {FindTextForward 1 1 String Nil 0 0 1 1 1 1 Find "find_text_forward" "Find Text (Forward)" "Searches the current code file forward (from the cursor) for a string." "" } {FindTextBackward 1 1 String Nil 0 0 1 1 1 1 Find "find_text_backward" "Find Text (Backwards)" "Searches the current code file backwards (from the cursor) for a string." "" } {FindNext 1 1 Null Nil 0 0 1 0 0 0 Find "find_next" "Find Next" "Searches the current code file forward (from the cursor) for the last searched string." "" } {FindPrev 1 1 Null Nil 0 0 1 0 0 0 Find "find_prev" "Find Previous" "Searches the current code file backwards (from the cursor) for the last searched string." "" } //- rjf: thread finding {FindThread 1 1 Entity Thread 0 0 0 0 0 1 Find "find_thread" "Find Thread" "Jumps to the passed thread in either source code, disassembly, or both if they're already open." "" } {FindSelectedThread 1 1 Null Nil 0 0 0 0 0 0 Find "find_selected_thread" "Find Selected Thread" "Jumps to the selected thread in either source code, disassembly, or both if they're already open." "" } //- rjf: name finding {GoToName 1 1 String Nil 0 0 0 0 1 1 Null "goto_name" "Go To Name" "Searches for the passed string as a file, a symbol in debug info, and more, then jumps to it if possible." "" } {GoToNameAtCursor 1 1 Null Nil 0 0 0 0 0 0 Null "goto_name_at_cursor" "Go To Name At Cursor" "Searches for the text at the cursor as a file, a symbol in debug info, and more, then jumps to it if possible." "" } //- rjf: watch expressions {ToggleWatchExpression 1 1 Null Nil 0 0 0 0 0 0 Binoculars "toggle_watch_expr" "Toggle Watch Expression" "Adds or removes an expression to an opened watch view." "" } {ToggleWatchExpressionAtCursor 1 1 Null Nil 0 0 0 0 0 0 Binoculars "toggle_watch_expr_at_cursor" "Toggle Watch Expression At Cursor" "Adds or removes the expression that the cursor or selection is currently over to an opened watch view." "" } {ToggleWatchExpressionAtMouse 1 1 Null Nil 0 0 0 0 0 0 Binoculars "toggle_watch_expr_at_mouse" "Toggle Watch Expression At Mouse" "Adds or removes the expression that the mouse is currently over to an opened watch view." "" } //- rjf: memory view parameterization {SetColumns 1 1 Index Nil 0 0 0 0 1 1 Thumbnails "set_columns" "Set Columns" "Sets the number of columns for a memory view." "" } //- rjf: disassembly view parameterization {ToggleAddressVisibility 1 1 Null Nil 0 0 0 0 0 0 Thumbnails "toggle_address_visibility" "Toggle Address Visibility" "Toggles the visibility of addresses in a disassembly view." "" } {ToggleCodeBytesVisibility 1 1 Null Nil 0 0 0 0 0 0 Thumbnails "toggle_code_bytes_visibility""Toggle Code Bytes Visibility" "Toggles the visibility of machine code bytes in a disassembly view." "" } //- rjf: general entity operations {EnableEntity 0 0 Null Nil 0 0 0 0 0 0 Null "enable_entity" "Enable Entity" "Enables an entity." "" } {DisableEntity 0 0 Null Nil 0 0 0 0 0 0 Null "disable_entity" "Disable Entity" "Disables an entity." "" } {FreezeEntity 0 0 Null Nil 0 0 0 0 0 0 Null "freeze_entity" "Freeze Entity" "Freezes an entity." "" } {ThawEntity 0 0 Null Nil 0 0 0 0 0 0 Null "thaw_entity" "Thaw Entity" "Thaws an entity." "" } {RemoveEntity 0 0 Null Nil 0 0 0 0 0 0 Null "remove_entity" "Remove Entity" "Removes an entity." "" } {NameEntity 0 0 Null Nil 0 0 0 0 0 0 Null "name_entity" "Name Entity" "Equips an entity with a name." "" } {EditEntity 0 0 Null Nil 0 0 0 0 0 0 Null "edit_entity" "Edit Entity" "Opens the editor for an entity." "" } {DuplicateEntity 0 0 Null Nil 0 0 0 0 0 0 Null "duplicate_entity" "Duplicate Entity" "Duplicates an entity." "" } {RelocateEntity 0 0 Null Nil 0 0 0 0 0 0 Null "relocate_entity" "Relocate Entity" "Relocates an entity." "" } //- rjf: breakpoints {AddBreakpoint 0 1 Null Nil 0 0 0 0 0 0 CircleFilled "add_breakpoint" "Add Breakpoint" "Places a breakpoint at a given location (file path and line number, address, or symbol name)." "" } {AddAddressBreakpoint 1 0 VirtualAddr Nil 0 0 0 0 1 1 CircleFilled "add_address_breakpoint" "Add Address Breakpoint" "Places a breakpoint on the specified address." "" } {AddFunctionBreakpoint 1 0 String Nil 0 0 0 0 1 1 CircleFilled "add_function_breakpoint" "Add Function Breakpoint" "Places a breakpoint on the first address(es) of the specified function." "" } {ToggleBreakpoint 0 1 Null Nil 0 0 0 0 0 0 CircleFilled "toggle_breakpoint" "Toggle Breakpoint" "Places or removes a breakpoint at a given location (file path and line number, address, or symbol name)." "" } {RemoveBreakpoint 1 1 Entity Breakpoint 0 0 0 0 0 1 Trash "remove_breakpoint" "Remove Breakpoint" "Removes an existing breakpoint." "" } {EnableBreakpoint 1 1 Entity Breakpoint 0 0 0 0 0 1 CheckFilled "enable_breakpoint" "Enable Breakpoint" "Enables a breakpoint." "" } {DisableBreakpoint 1 1 Entity Breakpoint 0 0 0 0 0 1 CheckHollow "disable_breakpoint" "Disable Breakpoint" "Disables a breakpoint." "" } //- rjf: watch pins {AddWatchPin 0 1 Null Nil 0 0 0 0 0 0 Binoculars "add_watch_pin" "Add Watch Pin" "Places a watch pin at a given location (file path and line number or address)." "" } {ToggleWatchPin 0 0 Null Nil 0 0 0 0 0 0 Binoculars "toggle_watch_pin" "Toggle Watch Pin" "Places or removes a watch pin at a given location (file path and line number or address)." "" } //- rjf: cursor operations {ToggleBreakpointAtCursor 1 1 Null Nil 0 0 0 0 0 0 CircleFilled "toggle_breakpoint_cursor" "Toggle Breakpoint At Cursor" "Places or removes a breakpoint on the line on which the active cursor sits." "" } {ToggleWatchPinAtCursor 1 1 String Nil 0 0 0 0 1 1 Binoculars "toggle_watch_pin_at_cursor" "Toggle Watch Pin At Cursor" "Places or removes a watch pin at the cursor on the currently active file." "" } //- rjf: targets {AddTarget 1 1 FilePath Nil 1 0 0 0 0 1 Target "add_target" "Add Target" "Adds a new target." "application,executable,debug" } {RemoveTarget 1 1 Entity Target 0 0 0 0 0 1 Trash "remove_target" "Remove Target" "Removes an existing target." "delete,remove,target" } {EditTarget 1 1 Entity Target 0 0 0 0 0 1 Pencil "edit_target" "Edit Target" "Edits an existing target." "" } {SelectTarget 1 1 Entity Target 0 0 0 0 0 1 Target "select_target" "Select Target" "Selects a target." "" } {EnableTarget 1 1 Entity Target 0 0 0 0 0 1 CheckFilled "enable_target" "Enable Target" "Enables a target, in addition to all targets currently enabled." "" } {DisableTarget 1 1 Entity Target 0 0 0 0 0 1 CheckHollow "disable_target" "Disable Target" "Disables a target." "" } //- rjf: ended processes {RetryEndedProcess 0 0 Entity Process 0 0 0 0 0 0 Null "retry_ended_process" "Retry Ended Process" "Launches a new process with the same options as the passed ended process." "" } //- rjf: attaching {Attach 1 1 ID Nil 0 0 0 0 0 1 Null "attach" "Attach" "Attaches to a process that is already running on the local machine." "" } {RegisterAsJITDebugger 1 1 Null Nil 0 0 0 0 0 0 Null "register_as_jit_debugger" "Register As Just-In-Time (JIT) Debugger" "Registers the RAD debugger as the just-in-time (JIT) debugger used by the operating system." "" } //- rjf: catchall general entity activation paths (drag/drop, clicking) {EntityRefFastPath 0 0 Null Nil 0 0 0 0 0 0 Null "entity_ref_fast_path" "Entity Reference Fast Path" "Activates the default behavior when clicking an entity reference." "" } {SpawnEntityView 0 0 Null Nil 0 0 0 0 0 0 Null "spawn_entity_view" "Spawn Entity View" "Spawns a new view, given an entity and other parameterizations." "" } {FindCodeLocation 0 1 FilePath Nil 0 0 0 0 0 1 FileOutline "find_code_location" "Find Code Location" "Finds a specific source code location given file, line, and column coordinates. Opens the file if necessary." "" } //- rjf: general-purpose view filtering {Filter 1 1 Null Nil 0 0 0 0 0 0 Find "filter" "Filter" "Begins filtering the active view." "sort,search,filter,find" } {ApplyFilter 1 1 Null Nil 0 0 0 0 0 0 Find "apply_filter" "Apply Filter" "Applies the typed filter to the active view." "sort,search,filter,find,apply" } {ClearFilter 1 1 Null Nil 0 0 0 0 0 0 Find "clear_filter" "Clear Filter" "Clears the filter applied to the active view." "sort,search,filter,find,clear" } //- rjf: view drivers {GettingStarted 1 1 Null Nil 0 0 0 0 0 0 QuestionMark "getting_started" "Getting Started" "Opens the menu for information on getting started." "tutorial,help" } {Commands 0 0 Null Nil 0 0 0 0 0 0 List "commands" "Commands" "Opens the list of all commands." "" } {Target 0 0 Null Nil 0 0 0 0 0 0 Target "target" "Target" "Opens the editor for a target." "" } {Targets 1 1 Null Nil 0 0 0 0 0 0 Target "targets" "Targets" "Opens the list of all targets." "" } {FilePathMap 1 1 Null Nil 0 0 0 0 0 0 FileOutline "file_path_map" "File Path Map" "Opens the file path mapping editor." "" } {AutoViewRules 1 1 Null Nil 0 0 0 0 0 0 Binoculars "auto_view_rules" "Auto View Rules" "Opens the auto view rule editor." "" } {Breakpoints 1 1 Null Nil 0 0 0 0 0 0 CircleFilled "breakpoints" "Breakpoints" "Opens the breakpoints view." "" } {WatchPins 1 1 Null Nil 0 0 0 0 0 0 Pin "watch_pins" "Watch Pins" "Opens the watch pins view." "" } {Scheduler 1 1 Null Nil 0 0 0 0 0 0 Scheduler "scheduler" "Scheduler" "Opens the scheduler view, for process and thread controls." "threads,processes,targets" } {CallStack 1 1 Null Nil 0 0 0 0 0 0 Thread "call_stack" "Call Stack" "Opens the call stack view." "callstack,thread,unwind" } {Modules 1 1 Null Nil 0 0 0 0 0 0 Module "modules" "Modules" "Opens the modules view." "" } {Watch 1 1 Null Nil 0 0 0 0 0 0 Binoculars "watch" "Watch" "Opens a watch view." "" } {Locals 1 1 Null Nil 0 0 0 0 0 0 Binoculars "locals" "Locals" "Opens a locals view." "" } {Registers 1 1 Null Nil 0 0 0 0 0 0 Binoculars "registers" "Registers" "Opens a registers view." "" } {Globals 1 1 Null Nil 0 0 0 0 0 0 Binoculars "globals" "Globals" "Opens a globals view." "" } {ThreadLocals 1 1 Null Nil 0 0 0 0 0 0 Binoculars "thread_locals" "Thread Locals" "Opens a thread locals view." "" } {Types 1 1 Null Nil 0 0 0 0 0 0 Binoculars "types" "Types" "Opens a types view." "" } {Procedures 1 1 Null Nil 0 0 0 0 0 0 Binoculars "procedures" "Procedures" "Opens a procedures view." "" } {PendingFile 0 0 Null Nil 0 0 0 0 0 0 FileOutline "pending_file" "Pending File" "Opens a view which asynchronously analyzes the file path parameter, then picks an appropriate viewer for it." "" } {Disassembly 1 1 Null Nil 0 0 0 0 0 0 Glasses "disassembly" "Disassembly" "Opens the disassembly view." "disasm" } {Output 1 1 Null Nil 0 0 0 0 0 0 List "output" "Output" "Opens an output view." "" } {Memory 1 1 Null Nil 0 0 0 0 0 0 Grid "memory" "Memory" "Opens a memory view." "" } {ExceptionFilters 1 1 Null Nil 0 0 0 0 0 0 Gear "exception_filters" "Exception Filters" "Opens the exception filters view." "exceptions,filters" } {Settings 1 1 Null Nil 0 0 0 0 0 0 Gear "settings" "Settings" "Opens the settings view." "theme,color,scheme,options" } //- rjf: queries {PickFile 0 0 FilePath Nil 1 0 0 0 0 1 FileOutline "pick_file" "Pick File" "Opens the file browser to pick a file." "" } {PickFolder 0 0 FilePath Nil 0 1 0 0 0 1 FolderOpenFilled "pick_folder" "Pick Folder" "Opens the file browser to pick a folder." "" } {PickFileOrFolder 0 0 FilePath Nil 1 1 0 0 0 1 FileOutline "pick_file_or_folder" "Pick File/Folder" "Opens the file browser to pick a file or folder." "" } //- rjf: query completion {CompleteQuery 0 0 Null Nil 0 0 0 0 0 0 Null "complete_query" "Complete Query" "Completes a query." "" } {CancelQuery 0 0 Null Nil 0 0 0 0 0 0 Null "cancel_query" "Cancel Query" "Cancels a query." "" } //- rjf: developer commands {ToggleDevMenu 1 1 Null Nil 0 0 0 0 0 0 Null "toggle_dev_menu" "Toggle Developer Menu" "Opens and closes the developer menu." "" } {LogMarker 1 1 Null Nil 0 0 0 0 0 0 Null "log_marker" "Log Marker" "Logs a marker in the application log, to denote specific points in time within the log." "" } } //////////////////////////////// //~ rjf: Built-In View Rules // // @view_rule_info // // NOTE(rjf): View rules are subtle in that they may impact any subset of the // eval visualization pipeline. The "array" view rule, for example, functions // by tweaking the type of an eval from `X *` to `X (*)[N]` (where N is // computed from whatever expression is specified by the view rule). The "list" // view rule, on the other hand, does not require any changes to the actual // eval nor its type - instead, it follows an alternative path in constructing // "viz blocks", and then constructing "viz rows" from those blocks. Compare // these to the simpler 'dec', 'bin', or 'oct' rules, which simply tweak the // radix used when stringizing numbers, which is something that only occurs in // single-line eval stringization building. // // As such, each view rule specification has a mask, which determines which // stages it may be used for. For a given view rule specification, if the bit // corresponding to a particular eval stage is set, then that view rule spec- // -ification also includes a hook which can be called from that stage. // // Below is a list of the stages in the eval visualization pipeline, as well as // abbreviations which are used in the tables. // // expr resolution, "xp" -> provides a chance for a view rule to make // modifications to expression trees that it is // applied to // // viz block prod, "vb" -> given a resolved eval, produce a list of non- // windowed "viz blocks", which correspond to one or // many contiguous rows in a watch-window-style UI. // one level of expanded struct members, with no sub- // expansions, would be one viz block. if one of those // members - in the middle - were expanded too, then // it would require three viz blocks - one for the // members before the sub-expansion, one for the // sub expansion members, and one for the members // after, and so on. this is done recursively. // // viz row prod, "vr" -> given a list of viz blocks, a windowed list of viz // rows may be produced. each of these rows has info // for building actual UI in e.g. a watch window - // whether or not the row can be expanded, whether or // not the row's value can be edited, what the edit- // able string is for a row, what the display string // is for a row, what the expression string is for a // row, what the type is for a row, and so on. // // line stringize, "ls" -> this is the stage used to produce display strings // in the "viz row prod" stage, as well as basically // any time UI needs to display the result of an eval // in a single line. this also occurs recursively, // descending into members & elements as needed, // constrained by # of available pixels and font size // and so on. // // row ui build, "ru" -> finally, after the previous stages are completed, // ui can finally be built according to all of the // per-row information produced. this is the stage // where view rules can insert their own arbitrary ui // on a per-row basis. // // view ui build, "vu" -> view rules which want to supply more sophisticated // visualizers have the ability to provide full // arbitrary UI hooks, which can either be produced // in a minified form via watch views, or via a // standalone tab. // // A few other bits are included for various ways in which a view rule may be // applied throughout the eval visualization pipeline. A list follows: // // inherited, "ih" -> is this view rule included, or not included, in // child expansions? // // expandable, "ex" -> does this view rule force the ability to expand // an expression, even if traditional analysis of type // info would not allow expansion? // // Not all of these stages are specified at this layer, however, since the // "df_core" layer is for the non-graphical core debugger features. So the // information pertaining to the eval visualization pipeline stages which // do require graphical subsystems (e.g. UI, fonts, rendering) are specified // in the "df_gfx" layer. // // For any view rules in this layer which also have graphical features, they // are specified in both tables under the same name. @table(coverage_check name name_lower string ih ex xp vb display_name docs schema description) D_ViewRuleTable: { {x Default default "default" - - - x "Default" - "" "" } {x Array array "array" - - x - "Array" x "x:{expr}" "Specifies that a pointer points to N elements, rather than only 1." } {x Slice slice "slice" - - x - "Slice" x "" "Specifies that a pointer within a struct, also containing an integer, points to the number of elements encoded by the integer." } {- List list "list" - - - x "List" x "x:{member}" "Specifies that some struct, union, or class forms the top of a linked list, and the member which points at the following element in the list." } {x ByteSwap bswap "bswap" x - x - "Byte Swap" x "" "Specifies that all integral evaluations should be byte-swapped, such that their endianness is reversed." } {x Cast cast "cast" - - x - "Cast" x "x:{type}" "Specifies that the expression to which the view rule is applied should be casted to the provided type." } {- BaseDec base_dec "dec" x - - - "Decimal Base (Base 10)" x "" "Specifies that all integral evaluations should appear in base-10 form." } {- BaseBin base_bin "bin" x - - - "Binary Base (Base 2)" x "" "Specifies that all integral evaluations should appear in base-2 form." } {- BaseOct base_oct "oct" x - - - "Octal Base (Base 8)" x "" "Specifies that all integral evaluations should appear in base-8 form." } {- BaseHex base_hex "hex" x - - - "Hexadecimal Base (Base 16)" x "" "Specifies that all integral evaluations should appear in base-16 form." } {- Only only "only" x - - x "Only Specified Members" x "x:{member}" "Specifies that only the specified members should appear in struct, union, or class evaluations." } {- Omit omit "omit" x - - x "Omit Specified Members" x "x:{member}" "Omits a list of member names from appearing in struct, union, or class evaluations." } {- NoAddr no_addr "no_addr" x - - - "Disable Address Values" x "" "Displays only what pointers point to, if possible, without the pointer's address value." } {x Checkbox checkbox "checkbox" - - - - "Checkbox" x "" "Displays simple integer values as checkboxes, encoding zero or nonzero values." } {- ColorRGBA color_rgba "color_rgba" - x - x "Color (RGBA)" x "" "Displays as a color, interpreting the data as encoding R, G, B, and A values." } {x Text text "text" - x - x "Text" x "x:{'lang':lang, 'size':expr}" "Displays as text." } {x Disasm disasm "disasm" - x - x "Disassembly" x "x:{'arch':arch, 'size':expr}" "Displays as disassembled instructions, interpreting the data as raw machine code." } {x Memory memory "memory" - x - x "Memory" x "x:{'size':expr}" "Displays as a raw memory grid." } {- Graph graph "graph" - x - x "Graph" x "" "Displays as a pointer graph, visualizing nodes and edges formed by pointers directly." } {x Bitmap bitmap "bitmap" - x - x "Bitmap" x "x:{'w':expr, 'h':expr, 'fmt':tex2dformat}" "Displays as a bitmap, interpreting the data as raw pixel data." } {- Geo3D geo3d "geo3d" - x - x "Geometry (3D)" x "x:{'count':expr, 'vtx':expr, 'vtx_size':expr}" "Displays as geometry, interpreting the data as index or vertex data." } } //////////////////////////////// //~ rjf: Developer Toggles @table(name) DF_DevToggleTable: { {telemetry_capture} {simulate_lag} {draw_ui_text_pos} {draw_ui_focus_debug} {draw_ui_box_heatmap} {eval_compiler_tooltips} {eval_watch_key_tooltips} {cmd_context_tooltips} {scratch_mouse_draw} {updating_indicator} } //////////////////////////////// //~ rjf: Generators //- rjf: enums @enum D_CfgSrc: { @expand(D_CfgSrcTable a) `$(a.name)`, COUNT, } @enum D_EntityKind: { @expand(D_EntityKindTable a) `$(a.name)`, COUNT, } @enum D_CmdKind: { @expand(D_CoreCmdTable, a) `$(a.name)`, COUNT, } @enum D_ViewRuleKind: { @expand(D_ViewRuleTable a) `$(a.name)`, COUNT, } //- rjf: command params @enum D_CmdParamSlot: { Null, @expand(D_CmdParamSlotTable a) `$(a.name)`, COUNT, } @struct D_CmdParams: { @expand(D_CmdParamSlotTable a) `$(a.c_type) $(a.name_lower)`; } @data(Rng1U64) d_cmd_param_slot_range_table: { `{0}`, @expand(D_CmdParamSlotTable a) `{OffsetOf(D_CmdParams, $(a.name_lower)), OffsetOf(D_CmdParams, $(a.name_lower)) + sizeof($(a.c_type))}`, } //- rjf: entity kind tables @data(String8) d_entity_kind_display_string_table: { @expand(D_EntityKindTable a) `str8_lit_comp("$(a.display_string)")`, } @data(String8) d_entity_kind_name_lower_table: { @expand(D_EntityKindTable a) `str8_lit_comp("$(a.name_lower)")`, } @data(String8) d_entity_kind_name_lower_plural_table: { @expand(D_EntityKindTable a) `str8_lit_comp("$(a.name_lower_plural)")`, } @data(String8) d_entity_kind_name_label_table: { @expand(D_EntityKindTable a) `str8_lit_comp("$(a.name_label)")`, } @data(D_EntityKindFlags) d_entity_kind_flags_table: { @expand(D_EntityKindTable a) `($(a.op_delete)*D_EntityKindFlag_CanDelete) | ($(a.op_freeze)*D_EntityKindFlag_CanFreeze) | ($(a.op_edit)*D_EntityKindFlag_CanEdit) | ($(a.op_rename)*D_EntityKindFlag_CanRename) | ($(a.op_enable)*D_EntityKindFlag_CanEnable) | ($(a.op_cond)*D_EntityKindFlag_CanCondition) | ($(a.op_dup)*D_EntityKindFlag_CanDuplicate) | ($(a.name_is_code)*D_EntityKindFlag_NameIsCode) | ($(a.name_is_path)*D_EntityKindFlag_NameIsPath) | ($(a.user_lifetime)*D_EntityKindFlag_UserDefinedLifetime) | ($(a.is_serialized)*D_EntityKindFlag_IsSerializedToConfig)`, } //- rjf: config source tables @data(String8) d_cfg_src_string_table: { @expand(D_CfgSrcTable a) `str8_lit_comp("$(a.string)")`, } @data(D_CmdKind) d_cfg_src_load_cmd_kind_table: { @expand(D_CfgSrcTable a) `D_CmdKind_$(a.load_cmd)`, } @data(D_CmdKind) d_cfg_src_write_cmd_kind_table: { @expand(D_CfgSrcTable a) `D_CmdKind_$(a.write_cmd)`, } @data(D_CmdKind) d_cfg_src_apply_cmd_kind_table: { @expand(D_CfgSrcTable a) `D_CmdKind_$(a.apply_cmd)`; } //- rjf: core view rule function prototypes @gen { @expand(D_ViewRuleTable a) `$(a.xp == "x" -> "D_VIEW_RULE_EXPR_RESOLUTION_FUNCTION_DEF(" .. a.name_lower .. ");")`; @expand(D_ViewRuleTable a) `$(a.vb == "x" -> "D_VIEW_RULE_VIZ_BLOCK_PROD_FUNCTION_DEF(" .. a.name_lower .. ");")`; } //- rjf: core command kind tables @data(D_CmdSpecInfo) @c_file d_core_cmd_kind_spec_info_table: { @expand(D_CoreCmdTable, a) ```{ str8_lit_comp("$(a.string)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), str8_lit_comp("$(a.display_name)"), (D_CmdSpecFlag_ListInUI*$(a.ui_vis))|(D_CmdSpecFlag_ListInIPCDocs*$(a.ipc_docs_vis)), {D_CmdParamSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind), (D_CmdQueryFlag_AllowFiles*$(a.q_allow_files))|(D_CmdQueryFlag_AllowFolders*$(a.q_allow_folders))|(D_CmdQueryFlag_CodeInput*$(a.q_is_code))|(D_CmdQueryFlag_KeepOldInput*$(a.q_keep_oi))|(D_CmdQueryFlag_SelectOldInput*$(a.q_select_oi))|(D_CmdQueryFlag_Required*$(a.q_required))}}```; } //- rjf: core view rule tables @data(D_ViewRuleSpecInfo) @c_file d_core_view_rule_spec_info_table: { @expand(D_ViewRuleTable a) ```{str8_lit_comp("$(a.string)"), str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.schema)"), str8_lit_comp("$(a.description)"), (D_ViewRuleSpecInfoFlag_Inherited*$(a.ih == "x"))|(D_ViewRuleSpecInfoFlag_Expandable*$(a.ex == "x"))|(D_ViewRuleSpecInfoFlag_ExprResolution*$(a.xp == "x"))|(D_ViewRuleSpecInfoFlag_VizBlockProd*$(a.vb == "x")), $(a.xp == "x" -> "D_VIEW_RULE_EXPR_RESOLUTION_FUNCTION_NAME("..a.name_lower..")") $(a.xp != "x" -> 0), $(a.vb == "x" -> "D_VIEW_RULE_VIZ_BLOCK_PROD_FUNCTION_NAME("..a.name_lower..")") $(a.vb != "x" -> 0), }```; } //- rjf: developer toggles @gen { @expand(DF_DevToggleTable a) `global B32 DEV_$(a.name) = 0;` } @gen { `struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] =`; `{`; @expand(DF_DevToggleTable a) `{&DEV_$(a.name), str8_lit_comp("$(a.name)")},` `};`; }