// Copyright (c) Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) //////////////////////////////// //~ rjf: Built-In Command Tables @table(name ui_vis ipc_docs_vis q_expr q_slot q_view q_ent_kind q_ctrl_ent_kind q_allow_files q_allow_folders q_keep_oi q_select_oi q_is_code q_floating q_required canonical_icon string display_name desc search_tags filter_tags) // / | | | | \___ _________________________________/ | | | | | | // / | | | | \ / | | | | | | D_CmdTable: // | | | | | | | | | | | | { //- rjf: low-level target control operations {LaunchAndRun 1 1 "query:targets" Cfg null Target Null 0 0 0 0 0 1 1 Play "launch_and_run" "Launch and Run" "Starts debugging a new instance of a target, then runs." "launch,start,run,target" "" } {LaunchAndStepInto 1 1 "query:targets" Cfg null Target Null 0 0 0 0 0 1 1 PlayStepForward "launch_and_step_into" "Launch and Step Into" "Starts debugging a new instance of a target, then stops at the program's entry point." "launch,start,entry,point" "" } {Kill 1 1 "query:processes" Process null Nil Process 0 0 0 0 0 1 1 X "kill" "Kill" "Kills the specified existing attached process(es)." "stop,kill" "" } {KillAll 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Stop "kill_all" "Kill All" "Kills all attached processes." "stop,kill,all" "" } {Detach 1 1 "query:processes" Process null Nil Process 0 0 0 0 0 1 1 Null "detach" "Detach" "Detaches the specified attached process(es)." "detach" "" } {Continue 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Play "continue" "Continue" "Continues executing all attached processes." "" "" } {StepIntoInst 1 1 "" Null null Nil Null 0 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 null Nil Null 0 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 null Nil Null 0 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 null Nil Null 0 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 null Nil Null 0 0 0 0 0 0 0 StepOut "step_out" "Step Out" "Runs to the first instruction after the current scope is exited." "" "" } {StepToExit 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 StepOut "step_to_exit" "Step To Exit" "Runs to the first encountered instruction which will exit the current scope." "" "" } {Halt 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Pause "halt" "Halt" "Halts all attached processes." "pause" "" } {SoftHaltRefresh 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Refresh "soft_halt_refresh" "Soft Halt Refresh" "Interrupts all attached processes to collect data, and then resumes them." "" "" } {SetThreadIP 0 1 "" Vaddr null Nil Null 0 0 0 0 1 1 1 Null "set_thread_ip" "Set Thread IP" "Sets the specified thread's instruction pointer at the specified address." "" "" } //- rjf: high-level composite target control operations {RunToLine 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Play "run_to_line" "Run To Line" "Runs until a particular source line is hit." "" "{text_pt_commands}" } {RunToName 1 1 "query:procedures" String null Nil Null 0 0 0 0 0 1 1 Play "run_to_name" "Run To Name" "Runs until a particular symbol name is hit." "" "{text_pt_commands}" } {Run 1 1 "" Null null Nil Null 0 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 null Nil Null 0 0 0 0 0 0 0 Redo "restart" "Restart" "Kills all attached processes, then launches all active targets." "restart,retry" "" } {StepInto 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 StepInto "step_into" "Step Into" "Steps once, possibly into function calls, for either source lines or instructions (whichever is selected)." "" "" } {StepOver 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 StepOver "step_over" "Step Over" "Steps once, always over function calls, for either source lines or instructions." "" "" } //- rjf: debug control context management operations {FreezeThread 1 1 "query:threads" Thread null Nil Thread 0 0 0 0 0 1 1 Locked "freeze_thread" "Freeze Thread" "Freezes the passed thread." "callstack,unwind" "" } {ThawThread 1 1 "query:threads" Thread null Nil Thread 0 0 0 0 0 1 1 Unlocked "thaw_thread" "Thaw Thread" "Thaws the passed thread." "" "" } {FreezeProcess 1 1 "query:processes" Process null Nil Process 0 0 0 0 0 1 1 Locked "freeze_process" "Freeze Process" "Freezes the passed process." "" "" } {ThawProcess 1 1 "query:processes" Process null Nil Process 0 0 0 0 0 1 1 Unlocked "thaw_process" "Thaw Process" "Thaws the passed process." "" "" } {FreezeMachine 0 1 "query:machines" Machine null Nil Machine 0 0 0 0 0 1 1 Locked "freeze_machine" "Freeze Machine" "Freezes the passed machine." "" "" } {ThawMachine 0 1 "query:machines" Machine null Nil Machine 0 0 0 0 0 1 1 Unlocked "thaw_machine" "Thaw Machine" "Thaws the passed machine." "" "" } {FreezeLocalMachine 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Machine "freeze_local_machine" "Freeze Local Machine" "Freezes the local machine." "" "" } {ThawLocalMachine 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Machine "thaw_local_machine" "Thaw Local Machine" "Thaws the local machine." "" "" } {FreezeEntity 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Unlocked "freeze_entity" "Freeze Entity" "Freezes an entity." "" "" } {ThawEntity 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Locked "thaw_entity" "Thaw Entity" "Thaws an entity." "" "" } //- rjf: entity decoration {SetEntityColor 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "set_entity_color" "Set Entity Color" "Sets the passed entity's color." "" "" } {SetEntityName 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "set_entity_name" "Set Entity Name" "Sets the passed entity's name." "" "" } //- rjf: modules {DownloadModuleDebugInfo 1 1 "query:modules" CtrlEntity null Nil Null 0 0 0 0 0 1 1 Module "download_module_debug_info" "Download Module Debug Info" "Tries to download a module's debug info from symbol server(s)." "" "{module_commands}" } //- rjf: attaching {Attach 1 1 "query:unattached_processes" PID null Nil Null 0 0 0 0 0 1 1 Null "attach" "Attach" "Attaches to a process that is already running on the local machine." "" "" } //- rjf: crash dump opening {OpenCrashDump 0 0 `folder:\\"$input\\"` FilePath null Nil Null 0 0 0 0 0 1 1 FileOutline "open_crash_dump" "Open Crash Dump" "Opens a crash dump file and recreates debuggee state at the time of the crash." "" "" } } @enum D_CmdKind: { Null, @expand(D_CmdTable, a) `$(a.name)`, COUNT, } //////////////////////////////// //~ rjf: Developer Toggles @table(name) D_DevToggleTable: { {always_refresh} {simulate_lag} {draw_ui_text_pos} {draw_ui_focus_debug} {draw_ui_box_heatmap} {eval_compiler_tooltips} {eval_watch_key_tooltips} {cmd_context_tooltips} {updating_indicator} } @gen { @expand(D_DevToggleTable a) `global B32 DEV_$(a.name) = 0;` } @gen { `struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] =`; `{`; @expand(D_DevToggleTable a) `{&DEV_$(a.name), str8_lit_comp("$(a.name)")},` `};`; } //////////////////////////////// //~ rjf: Entity Kinds @table(name code_name display_string) D_EntityKindTable: { {Root root "Root" } {Machine machine "Machine" } {Process process "Process" } {Thread thread "Thread" } {Module module "Module" } {EntryPoint entry_point "Entry Point" } {LaunchMsgID launch_msg_id "Launch Message ID" } {DebugInfoPath debug_info_path "Debug Info Path" } {PendingThreadName pending_thread_name "Pending Thread Name" } {PendingThreadColor pending_thread_color "Pending Thread Color" } {Breakpoint breakpoint "Breakpoint" } {AddressRangeAnnotation address_range_annotation "Address Range Annotation" } } @enum D_EntityKind: { Null, @expand(D_EntityKindTable a) `$(a.name)`, COUNT, } @data(String8) d_entity_kind_code_name_table: { `{0}`, @expand(D_EntityKindTable a) `str8_lit_comp("$(a.code_name)")` } @data(String8) d_entity_kind_display_string_table: { `{0}`, @expand(D_EntityKindTable a) `str8_lit_comp("$(a.display_name)")` } //////////////////////////////// //~ rjf: Exception Codes @table(name lower_name code default display_string) D_ExceptionCodeKindTable: { {Win32CtrlC win32_ctrl_c 0x40010005 1 "(Win32) Control-C" } {Win32CtrlBreak win32_ctrl_break 0x40010008 1 "(Win32) Control-Break" } {Win32WinRTOriginateError win32_win_rt_originate_error 0x40080201 0 "(Win32) WinRT Originate Error" } {Win32WinRTTransformError win32_win_rt_transform_error 0x40080202 0 "(Win32) WinRT Transform Error" } {Win32RPCCallCancelled win32_rpc_call_cancelled 0x0000071a 0 "(Win32) RPC Call Cancelled" } {Win32DatatypeMisalignment win32_datatype_misalignment 0x80000002 0 "(Win32) Data Type Misalignment" } {Win32AccessViolation win32_access_violation 0xc0000005 1 "(Win32) Access Violation" } {Win32InPageError win32_in_page_error 0xc0000006 0 "(Win32) In Page Error" } {Win32InvalidHandle win32_invalid_handle 0xc0000008 1 "(Win32) Invalid Handle Specified" } {Win32NotEnoughQuota win32_not_enough_quota 0xc0000017 0 "(Win32) Not Enough Quota" } {Win32IllegalInstruction win32_illegal_instruction 0xc000001d 0 "(Win32) Illegal Instruction" } {Win32CannotContinueException win32_cannot_continue_exception 0xc0000025 0 "(Win32) Cannot Continue From Exception" } {Win32InvalidExceptionDisposition win32_invalid_exception_disposition 0xc0000026 0 "(Win32) Invalid Exception Disposition Returned By Handler" } {Win32ArrayBoundsExceeded win32_array_bounds_exceeded 0xc000008c 0 "(Win32) Array Bounds Exceeded" } {Win32FloatingPointDenormalOperand win32_floating_point_denormal_operand 0xc000008d 0 "(Win32) Floating-Point Denormal Operand" } {Win32FloatingPointDivisionByZero win32_floating_point_division_by_zero 0xc000008e 0 "(Win32) Floating-Point Division By Zero" } {Win32FloatingPointInexactResult win32_floating_point_inexact_result 0xc000008f 0 "(Win32) Floating-Point Inexact Result" } {Win32FloatingPointInvalidOperation win32_floating_point_invalid_operation 0xc0000090 0 "(Win32) Floating-Point Invalid Operation" } {Win32FloatingPointOverflow win32_floating_point_overflow 0xc0000091 0 "(Win32) Floating-Point Overflow" } {Win32FloatingPointStackCheck win32_floating_point_stack_check 0xc0000092 0 "(Win32) Floating-Point Stack Check" } {Win32FloatingPointUnderflow win32_floating_point_underflow 0xc0000093 0 "(Win32) Floating-Point Underflow" } {Win32IntegerDivisionByZero win32_integer_division_by_zero 0xc0000094 0 "(Win32) Integer Division By Zero" } {Win32IntegerOverflow win32_integer_overflow 0xc0000095 0 "(Win32) Integer Overflow" } {Win32PrivilegedInstruction win32_privileged_instruction 0xc0000096 0 "(Win32) Privileged Instruction" } {Win32StackOverflow win32_stack_overflow 0xc00000fd 0 "(Win32) Stack Overflow" } {Win32UnableToLocateDLL win32_unable_to_locate_dll 0xc0000135 0 "(Win32) Unable To Locate DLL" } {Win32OrdinalNotFound win32_ordinal_not_found 0xc0000138 0 "(Win32) Ordinal Not Found" } {Win32EntryPointNotFound win32_entry_point_not_found 0xc0000139 0 "(Win32) Entry Point Not Found" } {Win32DLLInitializationFailed win32_dll_initialization_failed 0xc0000142 0 "(Win32) DLL Initialization Failed" } {Win32FloatingPointSSEMultipleFaults win32_floating_point_sse_multiple_faults 0xc00002b4 0 "(Win32) Floating Point SSE Multiple Faults" } {Win32FloatingPointSSEMultipleTraps win32_floating_point_sse_multiple_traps 0xc00002b5 0 "(Win32) Floating Point SSE Multiple Traps" } {Win32AssertionFailed win32_assertion_failed 0xc0000420 1 "(Win32) Assertion Failed" } {Win32ModuleNotFound win32_module_not_found 0xc06d007e 0 "(Win32) Module Not Found" } {Win32ProcedureNotFound win32_procedure_not_found 0xc06d007f 0 "(Win32) Procedure Not Found" } {Win32SanitizerErrorDetected win32_sanitizer_error_detected 0xe073616e 1 "(Win32) Sanitizer Error Detected" } {Win32SanitizerRawAccessViolation win32_sanitizer_raw_access_violation 0xe0736171 0 "(Win32) Sanitizer Raw Access Violation" } {Win32DirectXDebugLayer win32_directx_debug_layer 0x0000087a 1 "(Win32) DirectX Debug Layer" } } @enum D_ExceptionCodeKind: { Null, @expand(D_ExceptionCodeKindTable a) `$(a.name)`, COUNT, } @data(U32) d_exception_code_kind_code_table: { `0`; @expand(D_ExceptionCodeKindTable a) `$(a.code)`; } @data(String8) d_exception_code_kind_display_string_table: { `{0}`; @expand(D_ExceptionCodeKindTable a) `str8_lit_comp("$(a.display_string)")`; } @data(String8) d_exception_code_kind_lowercase_code_string_table: { `{0}`; @expand(D_ExceptionCodeKindTable a) `str8_lit_comp("$(a.lower_name)")`; } @data(B8) d_exception_code_kind_default_enable_table: { `0`; @expand(D_ExceptionCodeKindTable a) `$(a.default)`; } //////////////////////////////// //~ rjf: Exception Sub-Codes @table(name, value) DL_ExceptionSubCodeKindTable: { { W32_FAST_FAIL_LEGACY_GS_VIOLATION 0 } { W32_FAST_FAIL_VTGUARD_CHECK_FAILURE 1 } { W32_FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 } { W32_FAST_FAIL_CORRUPT_LIST_ENTRY 3 } { W32_FAST_FAIL_INCORRECT_STACK 4 } { W32_FAST_FAIL_INVALID_ARG 5 } { W32_FAST_FAIL_GS_COOKIE_INIT 6 } { W32_FAST_FAIL_FATAL_APP_EXIT 7 } { W32_FAST_FAIL_RANGE_CHECK_FAILURE 8 } { W32_FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 } { W32_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10 } { W32_FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11 } { W32_FAST_FAIL_INVALID_FIBER_SWITCH 12 } { W32_FAST_FAIL_INVALID_SET_OF_CONTEXT 13 } { W32_FAST_FAIL_INVALID_REFERENCE_COUNT 14 } { W32_FAST_FAIL_INVALID_JUMP_BUFFER 18 } { W32_FAST_FAIL_MRDATA_MODIFIED 19 } { W32_FAST_FAIL_CERTIFICATION_FAILURE 20 } { W32_FAST_FAIL_INVALID_EXCEPTION_CHAIN 21 } { W32_FAST_FAIL_CRYPTO_LIBRARY 22 } { W32_FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT 23 } { W32_FAST_FAIL_INVALID_IMAGE_BASE 24 } { W32_FAST_FAIL_DLOAD_PROTECTION_FAILURE 25 } { W32_FAST_FAIL_UNSAFE_EXTENSION_CALL 26 } { W32_FAST_FAIL_DEPRECATED_SERVICE_INVOKED 27 } { W32_FAST_FAIL_INVALID_BUFFER_ACCESS 28 } { W32_FAST_FAIL_INVALID_BALANCED_TREE 29 } { W32_FAST_FAIL_INVALID_NEXT_THREAD 30 } { W32_FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED 31 } { W32_FAST_FAIL_APCS_DISABLED 32 } { W32_FAST_FAIL_INVALID_IDLE_STATE 33 } { W32_FAST_FAIL_MRDATA_PROTECTION_FAILURE 34 } { W32_FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION 35 } { W32_FAST_FAIL_INVALID_LOCK_STATE 36 } { W32_FAST_FAIL_GUARD_JUMPTABLE 37 } { W32_FAST_FAIL_INVALID_LONGJUMP_TARGET 38 } { W32_FAST_FAIL_INVALID_DISPATCH_CONTEXT 39 } { W32_FAST_FAIL_INVALID_THREAD 40 } { W32_FAST_FAIL_INVALID_SYSCALL_NUMBER 41 } { W32_FAST_FAIL_INVALID_FILE_OPERATION 42 } { W32_FAST_FAIL_LPAC_ACCESS_DENIED 43 } { W32_FAST_FAIL_GUARD_SS_FAILURE 44 } { W32_FAST_FAIL_LOADER_CONTINUITY_FAILURE 45 } { W32_FAST_FAIL_GUARD_EXPORT_SUPPRESSION_FAILURE 46 } { W32_FAST_FAIL_INVALID_CONTROL_STACK 47 } { W32_FAST_FAIL_SET_CONTEXT_DENIED 48 } { W32_FAST_FAIL_INVALID_IAT 49 } { W32_FAST_FAIL_HEAP_METADATA_CORRUPTION 50 } { W32_FAST_FAIL_PAYLOAD_RESTRICTION_VIOLATION 51 } { W32_FAST_FAIL_LOW_LABEL_ACCESS_DENIED 52 } { W32_FAST_FAIL_ENCLAVE_CALL_FAILURE 53 } { W32_FAST_FAIL_UNHANDLED_LSS_EXCEPTON 54 } { W32_FAST_FAIL_ADMINLESS_ACCESS_DENIED 55 } { W32_FAST_FAIL_UNEXPECTED_CALL 56 } { W32_FAST_FAIL_CONTROL_INVALID_RETURN_ADDRESS 57 } { W32_FAST_FAIL_UNEXPECTED_HOST_BEHAVIOR 58 } { W32_FAST_FAIL_FLAGS_CORRUPTION 59 } { W32_FAST_FAIL_VEH_CORRUPTION 60 } { W32_FAST_FAIL_ETW_CORRUPTION 61 } { W32_FAST_FAIL_RIO_ABORT 62 } { W32_FAST_FAIL_INVALID_PFN 63 } { W32_FAST_FAIL_GUARD_ICALL_CHECK_FAILURE_XFG 64 } { W32_FAST_FAIL_CAST_GUARD 65 } { W32_FAST_FAIL_HOST_VISIBILITY_CHANGE 66 } { W32_FAST_FAIL_KERNEL_CET_SHADOW_STACK_ASSIST 67 } { W32_FAST_FAIL_PATCH_CALLBACK_FAILED 68 } { W32_FAST_FAIL_NTDLL_PATCH_FAILED 69 } { W32_FAST_FAIL_INVALID_FLS_DATA 70 } }