Namespaces

Enumerations

enum DebugSymbolFileType
Name Value
kDebugInfo 0
kBinary 1

Defined at line 10 of file ../../src/developer/debug/zxdb/symbols/debug_symbol_file_type.h

enum DwarfLang
Name Value
kNone 0
kC89 0x01
kC 0x02
kAda83 0x03
kCpp 0x04
kCobol74 0x05
kCobol85 0x06
kFortran77 0x07
kFortran90 0x08
kPascal83 0x09
kModula2 0x0a
kJava 0x0b
kC99 0x0c
kAda95 0x0d
kFortran95 0x0e
kPLI 0x0f
kObjC 0x10
kObjCpp 0x11
kUPC 0x12
kD 0x13
kPython 0x14
kOpenCL 0x15
kGo 0x16
kModula3 0x17
kHaskell 0x18
kCpp03 0x19
kCpp11 0x1a
kOCaml 0x1b
kRust 0x1c
kC11 0x1d
kSwift 0x1e
kJulia 0x1f
kDylan 0x20
kCpp14 0x21
kFortran03 0x22
kFortran08 0x23
kRenderScript 0x24
kBLISS 0x25
kLast 38

Defined at line 10 of file ../../src/developer/debug/zxdb/symbols/dwarf_lang.h

enum CommandGroup
Name Value
kNone 0
kAssembly 1
kBreakpoint 2
kGeneral 3
kProcess 4
kQuery 5
kStep 6
kSymbol 7

Used to group similar commands in the help.

Defined at line 11 of file ../../src/developer/debug/zxdb/console/command_group.h

enum StepMode
Name Value
kAddressRange 0
kSourceLine 1
kInstruction 2

Several thread controllers manage different types of stepping. This enum defines the

possibilities.

Defined at line 12 of file ../../src/developer/debug/zxdb/client/step_mode.h

enum DwarfTag
Name Value
kNone 0x00
kArrayType 0x01
kClassType 0x02
kEntryPoint 0x03
kEnumerationType 0x04
kFormalParameter 0x05
kImportedDeclaration 0x08
kLabel 0x0a
kLexicalBlock 0x0b
kMember 0x0d
kPointerType 0x0f
kReferenceType 0x10
kCompileUnit 0x11
kStringType 0x12
kStructureType 0x13
kSubroutineType 0x15
kTypedef 0x16
kUnionType 0x17
kUnspecifiedParameters 0x18
kVariant 0x19
kCommonBlock 0x1a
kCommonInclusion 0x1b
kInheritance 0x1c
kInlinedSubroutine 0x1d
kModule 0x1e
kPtrToMemberType 0x1f
kSetType 0x20
kSubrangeType 0x21
kWithStmt 0x22
kAccessDeclaration 0x23
kBaseType 0x24
kCatchBlock 0x25
kConstType 0x26
kConstant 0x27
kEnumerator 0x28
kFileType 0x29
kFriend 0x2a
kNamelist 0x2b
kNamelistItem 0x2c
kPackedType 0x2d
kSubprogram 0x2e
kTemplateTypeParameter 0x2f
kTemplateValueParameter 0x30
kThrownType 0x31
kTryBlock 0x32
kVariantPart 0x33
kVariable 0x34
kVolatileType 0x35
kDwarfProcedure 0x36
kRestrictType 0x37
kInterfaceType 0x38
kNamespace 0x39
kImportedModule 0x3a
kUnspecifiedType 0x3b
kPartialUnit 0x3c
kImportedUnit 0x3d
kCondition 0x3f
kSharedType 0x40
kTypeUnit 0x41
kRvalueReferenceType 0x42
kTemplateAlias 0x43
kCoarrayType 0x44
kGenericSubrange 0x45
kDynamicType 0x46
kAtomicType 0x47
kCallSite 0x48
kCallSiteParameter 0x49
kSkeletonUnit 0x4a
kImmutableType 0x4b
kLastDefined 76
kLoUser 0x4080
kHiUser 0xffff

Defined at line 12 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.h

enum ElfSymbolType
Name Value
kNormal 0
kPlt 1

Defined at line 14 of file ../../src/developer/debug/zxdb/symbols/elf_symbol_record.h

enum BreakpointAction
Name Value
kContinue 0
kSilentStop 1
kStop 2

What to do when a breakpoint is hit.

The ordering if this enum is in increasing order or precedence. The highest numbered value is

used when there are conflicts (see BreakpointActionHighestPrecedence() below).

Defined at line 14 of file ../../src/developer/debug/zxdb/client/breakpoint_action.h

enum FunctionStep
Name Value
kDefault 0
kStepThroughPlt 1
kStepNoLineInfo 2
kStepOut 3

Actions that might be performend when entering a new function. Some functions may be skipped

or stepped through transparently depending on what they are and the debugger configuration.

Defined at line 14 of file ../../src/developer/debug/zxdb/client/function_step.h

enum ExprTokenType
Name Value
kInvalid 0
kName 1
kSpecialName 2
kComment 3
kInteger 4
kFloat 5
kStringLiteral 6
kCharLiteral 7
kRustLifetime 8
kCommentBlockEnd 9
kEquals 10
kEquality 11
kInequality 12
kLessEqual 13
kGreaterEqual 14
kSpaceship 15
kDot 16
kDotStar 17
kComma 18
kSemicolon 19
kStar 20
kAmpersand 21
kDoubleAnd 22
kBitwiseOr 23
kLogicalOr 24
kArrow 25
kArrowStar 26
kLeftSquare 27
kRightSquare 28
kLeftParen 29
kRightParen 30
kLeftBracket 31
kRightBracket 32
kLess 33
kGreater 34
kMinus 35
kMinusMinus 36
kBang 37
kPlus 38
kPlusPlus 39
kSlash 40
kAt 41
kOctothorpe 42
kCaret 43
kPercent 44
kQuestion 45
kTilde 46
kColon 47
kColonColon 48
kPlusEquals 49
kMinusEquals 50
kStarEquals 51
kSlashEquals 52
kPercentEquals 53
kCaretEquals 54
kAndEquals 55
kOrEquals 56
kShiftLeft 57
kShiftLeftEquals 58
kShiftRight 59
kShiftRightEquals 60
kTrue 61
kFalse 62
kConst 63
kMut 64
kLet 65
kVolatile 66
kRestrict 67
kReinterpretCast 68
kStaticCast 69
kSizeof 70
kAs 71
kIf 72
kElse 73
kFor 74
kDo 75
kWhile 76
kLoop 77
kBreak 78
kOperator 79
kNew 80
kDelete 81
kNumTypes 82

This type must start at 0 and increment monotonically since it is used as an index into the

parser lookup table.

Defined at line 14 of file ../../src/developer/debug/zxdb/expr/expr_token_type.h

enum Align
Name Value
kLeft 0
kRight 1

Defined at line 15 of file ../../src/developer/debug/zxdb/console/format_table.h

enum ExprLanguage
Name Value
kC 1
kRust 2

The enum values should be bits so we can store the language applicability for each token in a

bitfield.

Defined at line 17 of file ../../src/developer/debug/zxdb/expr/expr_language.h

enum SettingType
Name Value
kBoolean 0
kInteger 1
kString 2
kList 3
kExecutionScope 4
kInputLocations 5
kNull 6

Defined at line 17 of file ../../src/developer/debug/zxdb/client/setting_value.h

enum IdentifierQualification
Name Value
kGlobal 0
kRelative 1

Identifiers can be explicitly global qualified ("::foo" in C++) or without

global qualification ("foo" or "Foo::Bar" in C++). Note that relative

can still include class or namespace qualifications.

Defined at line 18 of file ../../src/developer/debug/zxdb/symbols/identifier_base.h

enum VectorRegisterFormat
Name Value
kSigned8 0
kUnsigned8 1
kSigned16 2
kUnsigned16 3
kSigned32 4
kUnsigned32 5
kSigned64 6
kUnsigned64 7
kSigned128 8
kUnsigned128 9
kFloat 10
kDouble 11

Defined at line 18 of file ../../src/developer/debug/zxdb/expr/vector_register_format.h

enum Syntax
Name Value
kNormal 0
kComment 1
kHeading 2
kError 3
kWarning 4
kSpecial 5
kReversed 6
kVariable 7
kFileName 8
kKeywordBold 9
kKeywordNormal 10
kKeywordDim 11
kOperatorBold 12
kOperatorNormal 13
kOperatorDim 14
kNumberBold 15
kNumberNormal 16
kNumberDim 17
kStringBold 18
kStringNormal 19
kStringDim 20

"Special" is used to note something unusual or weird.

Defined at line 18 of file ../../src/developer/debug/zxdb/console/output_buffer.h

enum VmOpType
Name Value
kError 0
kUnary 1
kBinary 2
kExpandRef 3
kDrop 4
kDup 5
kLiteral 6
kJump 7
kJumpIfFalse 8
kGetLocal 9
kSetLocal 10
kPopLocals 11
kPushBreak 12
kPopBreak 13
kBreak 14
kCallback0 15
kCallback1 16
kCallback2 17
kCallbackN 18
kAsyncCallback0 19
kAsyncCallback1 20
kAsyncCallback2 21
kAsyncCallbackN 22
kLast 23

The bytecode operation types used by VmOp.

Our bytecode operations are very simple. Most of the critical logic is implemented via the

various callback operations. The bytecode operations exist only to dop the toplevel control-flow.

See VmOp for more.

Defined at line 18 of file ../../src/developer/debug/zxdb/expr/vm_op_type.h

enum VisitResult
Name Value
kDone 0
kAbort 1
kContinue 2

Return value for the callback for visiting the different scopes. The return for the whole

function will be that of the last executed callback.

Defined at line 20 of file ../../src/developer/debug/zxdb/symbols/visit_scopes.h

enum SpecialIdentifier
Name Value
kNone 0
kEscaped 1
kAnon 2
kMain 3
kElf 4
kPlt 5
kRegister 6
kZxdb 7
kLast 8

Defined at line 20 of file ../../src/developer/debug/zxdb/symbols/identifier_base.h

enum PointedToOptions
Name Value
kNoVoid 0
kIncludeVoid 1

Control what is allowed to be returned from |GetPointedToType|.

Defined at line 22 of file ../../src/developer/debug/zxdb/expr/resolve_ptr_ref.h

enum ErrType
Name Value
kNone 0
kGeneral 1
kCanceled 2
kNoConnection 3
kCorruptMessage 4
kClientApi 5
kNotSupported 6
kNotFound 7
kAlreadyExists 8
kNoResources 9
kInput 10
kOptimizedOut 11
kUnsupported 12

Most errors are general but in some cases we need to programmatically know a particular error.

These errors are listed here.

Defined at line 22 of file ../../src/developer/debug/zxdb/common/err.h

enum CastType
Name Value
kImplicit 0
kC 1
kReinterpret 2
kRust 3
kStatic 4

Our casting rules are somewhat different than C++. In a debugger, we want to be as permissive as

reasonable given the rules of the requested cast. When the user is interactively assigning or

converting values, they usually don't want the warnings and errors that come with C++.

Defined at line 22 of file ../../src/developer/debug/zxdb/expr/cast.h

enum PromoteToDerived
Name Value
kPtrOnly 0
kRefOnly 1
kPtrOrRef 2

Selects whether PromotePtrRefToDerived will convert, references (either rvalue or regular),

pointers, or both.

Defined at line 23 of file ../../src/developer/debug/zxdb/expr/resolve_base.h

enum Noun
Name Value
kNone 0
kBreakpoint 1
kFrame 2
kProcess 3
kGlobal 4
kSymServer 5
kThread 6
kFilter 7
kLast 8

Defined at line 23 of file ../../src/developer/debug/zxdb/console/nouns.h

enum SourceAffinity
Name Value
kSource 0
kAssembly 1
kNone 2

Indicates whether a command implies either source or assembly context. This

can be used by the frontend as a hint for what to show for the next stop.

Defined at line 25 of file ../../src/developer/debug/zxdb/console/verbs.h

enum VariablesType
Name Value
kLocal 0
kArguments 1
kRegister 2
kChildVariable 3
kVariablesTypeCount 4

Types of variables reported in variables request.

Defined at line 36 of file ../../src/developer/debug/zxdb/debug_adapter/context.h

enum Verb
Name Value
kNone 0
kAspace 1
kAsyncBacktrace 2
kAttach 3
kAuth 4
kBacktrace 5
kBreak 6
kClear 7
kCls 8
kConnect 9
kContinue 10
kDetach 11
kDisable 12
kDisassemble 13
kDisconnect 14
kDisplay 15
kDown 16
kEnable 17
kExceptionInfo 18
kFinish 19
kGet 20
kHandle 21
kHelp 22
kJump 23
kKill 24
kLibs 25
kList 26
kListProcesses 27
kLocals 28
kMemAnalyze 29
kMemRead 30
kNew 31
kNext 32
kNexti 33
kOpenDump 34
kPause 35
kPrint 36
kQuit 37
kRegs 38
kRm 39
kRun 40
kRunComponent 41
kRunTest 42
kSaveDump 43
kSet 44
kStackData 45
kStackUsage 46
kStatus 47
kStderr 48
kStdout 49
kStep 50
kStepi 51
kSteps 52
kSymDebug 53
kSymInfo 54
kSymNear 55
kSymSearch 56
kSymStat 57
kSysInfo 58
kUntil 59
kUp 60
kWatch 61
kLast 62

Defined at line 36 of file ../../src/developer/debug/zxdb/console/verbs.h

enum SessionConnectionType
Name Value
kNetwork 1
kUnix 2

Defined at line 47 of file ../../src/developer/debug/zxdb/client/session.h

enum TextBackgroundColor
Name Value
kDefault 0
kBlack 1
kBlue 2
kCyan 3
kGray 4
kGreen 5
kMagenta 6
kRed 7
kYellow 8
kWhite 9
kLightBlue 10
kLightCyan 11
kLightGray 12
kLightGreen 13
kLightMagenta 14
kLightRed 15
kLightYellow 16

The following color enums are to be used when Syntax is not enough, which

is meant to semantic meaning. Colors are to be used by specific output that

use more fine-grained control over color output, like the register output

table.

Colors never override syntax. They are only applied when the Span is using

a normal syntax.

Defined at line 55 of file ../../src/developer/debug/zxdb/console/output_buffer.h

enum FloatFollowing
Name Value
kCanFollow 0
kCanNotFollow 1

The tokenizer needs some context to disambiguate the Rust case where "foo.0.1" where this is

a sequence of accesses with integers rather than a floating point number.

Defined at line 78 of file ../../src/developer/debug/zxdb/expr/number_parser.h

enum TextForegroundColor
Name Value
kDefault 0
kBlack 1
kBlue 2
kCyan 3
kGray 4
kGreen 5
kMagenta 6
kRed 7
kYellow 8
kWhite 9
kLightBlue 10
kLightCyan 11
kLightGray 12
kLightGreen 13
kLightMagenta 14
kLightRed 15
kLightYellow 16

Defined at line 79 of file ../../src/developer/debug/zxdb/console/output_buffer.h

enum FloatSuffix
Name Value
kNone 0
kFloat 1
kLong 2

Defined at line 96 of file ../../src/developer/debug/zxdb/expr/number_parser.h

Records

Functions

  • std::vector<uint8_t> CreateData (size_t length)

    Defined at line 11 of file ../../src/developer/debug/zxdb/console/string_formatters_unittest.cc

  • dap::ResponseOrError<dap::SetBreakpointsResponse> OnRequestBreakpoint (DebugAdapterContext * ctx, const dap::SetBreakpointsRequest & req)

    Defined at line 15 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_breakpoint.cc

  • dap::ResponseOrError<dap::ContinueResponse> OnRequestContinue (DebugAdapterContext * ctx, const dap::ContinueRequest & request)

    Defined at line 13 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_continue.cc

  • void OnRequestNext (DebugAdapterContext * ctx, const dap::NextRequest & request, std::function<void (dap::ResponseOrError<dap::NextResponse>)> callback)

    Defined at line 12 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_next.cc

  • void OnRequestPause (DebugAdapterContext * ctx, const dap::PauseRequest & request, std::function<void (dap::ResponseOrError<dap::PauseResponse>)> callback)

    Defined at line 11 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_pause.cc

  • dap::ResponseOrError<dap::ScopesResponse> OnRequestScopes (DebugAdapterContext * ctx, const dap::ScopesRequest & req)

    Defined at line 24 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_scopes.cc

  • void OnRequestStepIn (DebugAdapterContext * ctx, const dap::StepInRequest & request, std::function<void (dap::ResponseOrError<dap::StepInResponse>)> callback)

    Defined at line 12 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_step_in.cc

  • void OnRequestStepOut (DebugAdapterContext * ctx, const dap::StepOutRequest & request, std::function<void (dap::ResponseOrError<dap::StepOutResponse>)> callback)

    Defined at line 12 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_step_out.cc

  • dap::ResponseOrError<dap::ThreadsResponse> OnRequestThreads (DebugAdapterContext * ctx, const dap::ThreadsRequest & req)

    Defined at line 13 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_threads.cc

  • VerbRecord GetAspaceVerbRecord ()

    Defined at line 244 of file ../../src/developer/debug/zxdb/console/commands/verb_aspace.cc

  • VerbRecord GetAsyncBacktraceVerbRecord ()

    Defined at line 865 of file ../../src/developer/debug/zxdb/console/commands/verb_async_backtrace.cc

  • VerbRecord GetAuthVerbRecord ()

    Defined at line 38 of file ../../src/developer/debug/zxdb/console/commands/verb_auth.cc

  • VerbRecord GetBacktraceVerbRecord ()

    Defined at line 127 of file ../../src/developer/debug/zxdb/console/commands/verb_backtrace.cc

  • VerbRecord GetBreakVerbRecord ()

    Defined at line 354 of file ../../src/developer/debug/zxdb/console/commands/verb_break.cc

  • VerbRecord GetClearVerbRecord ()

    Defined at line 85 of file ../../src/developer/debug/zxdb/console/commands/verb_clear.cc

  • VerbRecord GetClsVerbRecord ()

    Defined at line 32 of file ../../src/developer/debug/zxdb/console/commands/verb_cls.cc

  • VerbRecord GetConnectVerbRecord ()

    Defined at line 148 of file ../../src/developer/debug/zxdb/console/commands/verb_connect.cc

  • VerbRecord GetContinueVerbRecord ()

    Defined at line 111 of file ../../src/developer/debug/zxdb/console/commands/verb_continue.cc

  • VerbRecord GetDetachVerbRecord ()

    Defined at line 176 of file ../../src/developer/debug/zxdb/console/commands/verb_detach.cc

  • VerbRecord GetDisableVerbRecord ()

    Defined at line 76 of file ../../src/developer/debug/zxdb/console/commands/verb_disable.cc

  • VerbRecord GetDisassembleVerbRecord ()

    Defined at line 234 of file ../../src/developer/debug/zxdb/console/commands/verb_disassemble.cc

  • VerbRecord GetDisconnectVerbRecord ()

    Defined at line 39 of file ../../src/developer/debug/zxdb/console/commands/verb_disconnect.cc

  • VerbRecord GetDisplayVerbRecord ()

    Defined at line 134 of file ../../src/developer/debug/zxdb/console/commands/verb_display.cc

  • VerbRecord GetEnableVerbRecord ()

    Defined at line 75 of file ../../src/developer/debug/zxdb/console/commands/verb_enable.cc

  • VerbRecord GetExceptionInfoVerbRecord ()

    Defined at line 100 of file ../../src/developer/debug/zxdb/console/commands/verb_exception_info.cc

  • VerbRecord GetFinishVerbRecord ()

    Defined at line 71 of file ../../src/developer/debug/zxdb/console/commands/verb_finish.cc

  • VerbRecord GetHandleVerbRecord ()

    Defined at line 144 of file ../../src/developer/debug/zxdb/console/commands/verb_handle.cc

  • VerbRecord GetHelpVerbRecord ()

    Defined at line 507 of file ../../src/developer/debug/zxdb/console/commands/verb_help.cc

  • VerbRecord GetJumpVerbRecord ()

    Defined at line 72 of file ../../src/developer/debug/zxdb/console/commands/verb_jump.cc

  • VerbRecord GetKillVerbRecord ()

    Defined at line 55 of file ../../src/developer/debug/zxdb/console/commands/verb_kill.cc

  • VerbRecord GetLibsVerbRecord ()

    Defined at line 90 of file ../../src/developer/debug/zxdb/console/commands/verb_libs.cc

  • VerbRecord GetListVerbRecord ()

    Defined at line 273 of file ../../src/developer/debug/zxdb/console/commands/verb_list.cc

  • VerbRecord GetLocalsVerbRecord ()

    Defined at line 133 of file ../../src/developer/debug/zxdb/console/commands/verb_locals.cc

  • VerbRecord GetMemReadVerbRecord ()

    Defined at line 121 of file ../../src/developer/debug/zxdb/console/commands/verb_mem_read.cc

  • VerbRecord GetNewVerbRecord ()

    Defined at line 88 of file ../../src/developer/debug/zxdb/console/commands/verb_new.cc

  • VerbRecord GetNextVerbRecord ()

    Defined at line 68 of file ../../src/developer/debug/zxdb/console/commands/verb_next.cc

  • VerbRecord GetNextiVerbRecord ()

    Defined at line 72 of file ../../src/developer/debug/zxdb/console/commands/verb_nexti.cc

  • VerbRecord GetOpendumpVerbRecord ()

    Defined at line 103 of file ../../src/developer/debug/zxdb/console/commands/verb_opendump.cc

  • VerbRecord GetPauseVerbRecord ()

    Defined at line 211 of file ../../src/developer/debug/zxdb/console/commands/verb_pause.cc

  • VerbRecord GetPrintVerbRecord ()

    Defined at line 77 of file ../../src/developer/debug/zxdb/console/commands/verb_print.cc

  • VerbRecord GetPsVerbRecord ()

    Defined at line 183 of file ../../src/developer/debug/zxdb/console/commands/verb_ps.cc

  • VerbRecord GetQuitVerbRecord ()

    Defined at line 89 of file ../../src/developer/debug/zxdb/console/commands/verb_quit.cc

  • VerbRecord GetRegsVerbRecord ()

    Defined at line 246 of file ../../src/developer/debug/zxdb/console/commands/verb_regs.cc

  • VerbRecord GetRmVerbRecord ()

    Defined at line 115 of file ../../src/developer/debug/zxdb/console/commands/verb_rm.cc

  • VerbRecord GetRunVerbRecord ()

    Defined at line 94 of file ../../src/developer/debug/zxdb/console/commands/verb_run.cc

  • VerbRecord GetRunComponentVerbRecord ()

    Defined at line 86 of file ../../src/developer/debug/zxdb/console/commands/verb_run_component.cc

  • VerbRecord GetRunTestVerbRecord ()

    Defined at line 111 of file ../../src/developer/debug/zxdb/console/commands/verb_run_test.cc

  • VerbRecord GetSaveDumpVerbRecord ()

    Defined at line 97 of file ../../src/developer/debug/zxdb/console/commands/verb_savedump.cc

  • VerbRecord GetStackDataVerbRecord ()

    Defined at line 123 of file ../../src/developer/debug/zxdb/console/commands/verb_stack_data.cc

  • VerbRecord GetStderrVerbRecord ()

    Defined at line 23 of file ../../src/developer/debug/zxdb/console/commands/verb_stderr.cc

  • VerbRecord GetStepVerbRecord ()

    Defined at line 117 of file ../../src/developer/debug/zxdb/console/commands/verb_step.cc

  • VerbRecord GetStepiVerbRecord ()

    Defined at line 73 of file ../../src/developer/debug/zxdb/console/commands/verb_stepi.cc

  • VerbRecord GetSymDebugVerbRecord ()

    Defined at line 379 of file ../../src/developer/debug/zxdb/console/commands/verb_sym_debug.cc

  • VerbRecord GetSymInfoVerbRecord ()

    Defined at line 167 of file ../../src/developer/debug/zxdb/console/commands/verb_sym_info.cc

  • VerbRecord GetSymNearVerbRecord ()

    Defined at line 72 of file ../../src/developer/debug/zxdb/console/commands/verb_sym_near.cc

  • VerbRecord GetSymSearchVerbRecord ()

    Defined at line 237 of file ../../src/developer/debug/zxdb/console/commands/verb_sym_search.cc

  • VerbRecord GetSymStatVerbRecord ()

    Defined at line 204 of file ../../src/developer/debug/zxdb/console/commands/verb_sym_stat.cc

  • VerbRecord GetSysInfoVerbRecord ()

    Defined at line 59 of file ../../src/developer/debug/zxdb/console/commands/verb_sys_info.cc

  • VerbRecord GetUntilVerbRecord ()

    Defined at line 138 of file ../../src/developer/debug/zxdb/console/commands/verb_until.cc

  • VerbRecord GetUpVerbRecord ()

    Defined at line 77 of file ../../src/developer/debug/zxdb/console/commands/verb_up.cc

  • VerbRecord GetWatchVerbRecord ()

    Defined at line 131 of file ../../src/developer/debug/zxdb/console/commands/verb_watch.cc

  • void OnRequestEvaluate (DebugAdapterContext * ctx, const dap::EvaluateRequest & req, const std::function<void (dap::ResponseOrError<dap::EvaluateResponse>)> & callback)

    Defined at line 13 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_evaluate.cc

  • void OnRequestTerminate (DebugAdapterContext * ctx, const dap::TerminateRequest & req, const std::function<void (dap::ResponseOrError<dap::TerminateResponse>)> & callback)

    Defined at line 13 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_terminate.cc

  • template <typename ResultType>
    fpromise::promise<ResultType, Err> MakeErrPromise (Err err)

    Helper for creating an error promise. This is used when the error is synchronously known in

    a function that returns a promise.

    Defined at line 16 of file ../../src/developer/debug/zxdb/common/async_util.h

  • dap::StackTraceResponse PopulateStackTraceResponse (DebugAdapterContext * ctx, Thread * thread, const dap::StackTraceRequest & req)

    Defined at line 16 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_stacktrace.cc

  • std::string GetSelfPath ()

    Returns the path (dir + file name) of the current executable.

    Defined at line 19 of file ../../src/developer/debug/zxdb/common/host_util.cc

  • OutputBuffer FormatFilter (const ConsoleContext * context, const Filter * filter)

    Defined at line 19 of file ../../src/developer/debug/zxdb/console/format_filter.cc

  • std::ostream & operator<< (std::ostream & out, const LazySymbol & s)

    For outputting error messages for LineMatch.

    Defined at line 20 of file ../../src/developer/debug/zxdb/symbols/find_line_unittest.cc

  • int RunLocalAgent (fbl::unique_fd read_pipe, fbl::unique_fd write_pipe)

    Defined at line 21 of file ../../src/developer/debug/zxdb/local_agent.cc

  • std::ostream & operator<< (std::ostream & out, const LineMatch & m)

    Defined at line 24 of file ../../src/developer/debug/zxdb/symbols/find_line_unittest.cc

  • ExprLanguage DwarfLangToExprLanguage (DwarfLang dwarf)

    All non-Rust languages are treated as C.

    Defined at line 25 of file ../../src/developer/debug/zxdb/expr/expr_language.h

  • template <typename T, typename U>
    std::optional<std::string> DidYouMean (const std::string & candidate, const std::map<std::string, T> noun_choices, const std::map<std::string, U> verb_choices, size_t max_edit_distance)

    Returns a suggestion for what the user might have meant by candidate given the available choices.

    The suggestion will be at most max_edit_distance away from the candidate.

    Defined at line 25 of file ../../src/developer/debug/zxdb/console/did_you_mean.h

  • template <typename T, typename U, typename R = std::conditional_t<sizeof(T) >= sizeof(U), T, U>>
    std::optional<R> CheckedAdd (T lhs, U rhs)

    Returns the result of adding |lhs| and |rhs|. If the result overflows, then std::nullopt is

    returned. The sizes of the types for |lhs| and |rhs| may differ. The returned value will be

    stored in the larger of the two and is the type that must overflow for this function to return

    std::nullopt.

    Use it like:

    uint64_t some_number = 0;

    if (auto checked_sum = CheckedAdd(1, 2)) {

    some_number = *checked_sum;

    } else {

    return Err("Overflow!");

    }

    Defined at line 26 of file ../../src/developer/debug/zxdb/common/checked_math.h

  • template <typename T>
    fxl::RefPtr<T> RefPtrTo (const T * pointer)

    Converts a raw pointer to a reference-counted type to a RefPtr.

    Const and fxl::RefPtr don't play well together so this requires an awkward const_cast. Callers

    should take care to preserve the const expectation of the caller.

    In zxdb this is normally this is done for Symbol-derived classes which are const in their normal

    usage anyway.

    Example:

    void Foo(const Type* type) {

    fxl::RefPtr

    <Type

    > ref = RefPtrTo(type);

    ...

    }

    Defined at line 27 of file ../../src/developer/debug/zxdb/common/ref_ptr_to.h

  • void OnRequestVariables (DebugAdapterContext * ctx, const dap::VariablesRequest & req, const std::function<void (dap::ResponseOrError<dap::VariablesResponse>)> & callback)

    Defined at line 319 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_variables.cc

  • VerbRecord GetDownVerbRecord ()

    Defined at line 61 of file ../../src/developer/debug/zxdb/console/commands/verb_down.cc

  • std::unique_ptr<debug::BufferedFD> StreamFDToConsole (fbl::unique_fd fd, Console * console)

    Defined at line 14 of file ../../src/developer/debug/zxdb/console/fd_streamer.cc

  • OutputBuffer FormatTarget (ConsoleContext * context, const Target * target)

    Defined at line 30 of file ../../src/developer/debug/zxdb/console/format_target.cc

  • void VmExec (const fxl::RefPtr<EvalContext> & eval_context, VmStream stream, EvalCallback cb)

    Defined at line 570 of file ../../src/developer/debug/zxdb/expr/vm_exec.cc

  • char ** GetEnviron ()

    Returns the environment variables.

    Defined at line 40 of file ../../src/developer/debug/zxdb/common/host_util.cc

  • std::string to_string (int128_t i)

    std::to_string version for this type (the standard library doesn't define it).

    Defined at line 21 of file ../../src/developer/debug/zxdb/common/int128_t.cc

  • VerbRecord GetMemAnalyzeVerbRecord ()

    Defined at line 132 of file ../../src/developer/debug/zxdb/console/commands/verb_mem_analyze.cc

  • VerbRecord GetStdoutVerbRecord ()

    Defined at line 37 of file ../../src/developer/debug/zxdb/console/commands/verb_stdout.cc

  • OutputBuffer FormatTargetList (ConsoleContext * context, int indent)

    Defined at line 66 of file ../../src/developer/debug/zxdb/console/format_target.cc

  • void SyncFillAndDescribeFormatNode (const fxl::RefPtr<EvalContext> & eval_context, FormatNode * node, const FormatOptions & opts)

    Evaluates and describes a single given node synchronously, running the message loop if necessary.

    This is not recursive.

    Defined at line 28 of file ../../src/developer/debug/zxdb/expr/format_test_support.cc

  • std::string to_string (uint128_t i)

    Defined at line 13 of file ../../src/developer/debug/zxdb/common/int128_t.cc

  • VerbRecord GetAttachVerbRecord ()

    Defined at line 331 of file ../../src/developer/debug/zxdb/console/commands/verb_attach.cc

  • void OutputFrameInfoForChange (CommandContext * cmd_context, const Frame * frame, int id)

    Prints the message for up/down commands.

    Defined at line 67 of file ../../src/developer/debug/zxdb/console/commands/verb_down.cc

  • std::string GetCurrentRowMarker ()

    Returns a string containing the marker for marking the current line. May be UTF-8 so size() could

    be > 1, but it will only be one Unicode character.

    Defined at line 9 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • std::vector<std::string> ExtractSourceLines (const std::string & contents, int first_line, int last_line)

    Extracts the given ranges of lines from the source contents. Line numbers are

    1-based and inclusive. This may do short reads if the file isn't large

    enough. The first line must be at least 1 (sort reads can't work off the

    beginning since the caller won't know what the first line is).

    Defined at line 13 of file ../../src/developer/debug/zxdb/symbols/source_util.cc

  • void AppendULeb (uint64_t value, std::vector<uint8_t> * out)

    Appends the DWARWF unsigned "LEB128"-encoded value to the vector. This encoding is a UTF-8-like

    variable-length integer encoding.

    To decode, see DataExtractor::ReadUleb128();

    Defined at line 9 of file ../../src/developer/debug/zxdb/common/leb.cc

  • OutputBuffer LoopUntilAsyncOutputBufferComplete (fxl::RefPtr<AsyncOutputBuffer> buffer)

    Runs the current message loop (which must already be set up on the current thread) until the

    AsyncOutputBuffer is complete, and returns the result.

    This should only be used in test code since it runs a nested message loop. For non-test code

    normally you would do Console->Output() and it will get automatically written when the buffer is

    complete.

    Defined at line 11 of file ../../src/developer/debug/zxdb/console/async_output_buffer_test_util.cc

  • VerbRecord GetStepsVerbRecord ()

    Defined at line 112 of file ../../src/developer/debug/zxdb/console/commands/verb_steps.cc

  • OutputBuffer FormatFilterList (ConsoleContext * context, int indent)

    Formats the current filter list in a table.

    Defined at line 58 of file ../../src/developer/debug/zxdb/console/format_filter.cc

  • const char * TargetStateToString (Target::State state)

    Defined at line 122 of file ../../src/developer/debug/zxdb/console/format_target.cc

  • const std::set<std::string> & AllKeywordsForLanguage (ExprLanguage language, bool permissive)

    Returns the set of all keywords for the given language. If "permissive" is set, the set will

    include names that aren't strictly built-in but are commonly thought of as built-in, like

    "int32_t" in C.

    Defined at line 100 of file ../../src/developer/debug/zxdb/expr/keywords.cc

  • Identifier GetSymbolScopePrefix (const Symbol * symbol)

    This helper function gets the scope for the symbol. This includes class and namespace names and

    will be glbally qualified, but does not include the name of the symbol itself. Use

    Symbol::GetFullName() for that.

    Defined at line 75 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • Err ConnectToHost (const std::string & host, uint16_t port, fbl::unique_fd * socket)

    If successful, |socket| will contain a valid socket fd.

    This function will take care for differences each OS has when connecting through a socket.

    Defined at line 151 of file ../../src/developer/debug/zxdb/client/socket_connect.cc

  • std::string_view ExtractLastFileComponent (std::string_view path)

    Extracts the substring into the given file path of the last path component (the stuff following

    the last slash). If the path ends in a slash, it will return an empty StringView. If the input

    has no slash, it will return the whole thing.

    Defined at line 16 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • size_t EditDistance (const std::string & lhs, const std::string & rhs)

    Returns the edit distance between the two strings.

    Defined at line 12 of file ../../src/developer/debug/zxdb/console/did_you_mean.cc

  • std::string GetLittleEndianHexOutput (cpp20::span<const uint8_t> data)

    Obtains the value as a series of readable 32-bit separated hex values. This will interpret is as

    little endian (first byte is less significant). Will left-zero-pad up to the closest upper 4-byte

    multiple.

    Defined at line 16 of file ../../src/developer/debug/zxdb/console/string_formatters.cc

  • std::ostream & operator<< (std::ostream & , const VmOp & op)

    Debug formatting capabilities.

    Defined at line 19 of file ../../src/developer/debug/zxdb/expr/vm_op.cc

  • Err ParseHostPort (const std::string & in_host, const std::string & in_port, std::string * out_host, uint16_t * out_port)

    Parse |in_host,in_port|, storing the parsed values in |*out_host,*out_port|.

    The only parsing done for |in_host| is to ensure it's non-empty, and if it is an IPv6 address

    (i.e., it's wrapped in [], e.g., [::1]), then remove the outer [].

    Defined at line 11 of file ../../src/developer/debug/zxdb/common/inet_util.cc

  • bool FormatCategoryARM64 (const FormatRegisterOptions & options, debug::RegisterCategory category, const std::vector<debug::RegisterValue> & registers, OutputBuffer * out)

    Does ARM64-specific formatting of the registesrs of a given category. Returns true if this

    category was handled. False means there is no special ARM64 handling for this category.

    Defined at line 248 of file ../../src/developer/debug/zxdb/console/format_register_arm64.cc

  • bool FormatCategoryX64 (const FormatRegisterOptions & options, debug::RegisterCategory category, const std::vector<debug::RegisterValue> & registers, OutputBuffer * out)

    Does x64-specific formatting of the registesrs of a given category. Returns true if this category

    was handled. False means their is no special X64 handling for this category.

    Defined at line 352 of file ../../src/developer/debug/zxdb/console/format_register_x64.cc

  • Err ParseSpecialIdentifier (std::string_view input, size_t * cur, SpecialIdentifier * special, std::string * contents, size_t * error_location)

    Parses a special identifier of "$special_name(contents)" or "$special_name". It starts at index

    |*cur| inside |input|. On error, |*error_location| will be set to the byte that goes along with

    the error.

    Defined at line 17 of file ../../src/developer/debug/zxdb/expr/parse_special_identifier.cc

  • std::string to_hex_string (int8_t i, int digits, bool include_prefix)

    Cast signed numbers to their unsigned variant before converting to 64-bit to avoid sign

    extension.

    Defined at line 32 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • VerbRecord GetStackUsageVerbRecord ()

    Defined at line 399 of file ../../src/developer/debug/zxdb/console/commands/verb_stack_usage.cc

  • void RunVerbStdio (Verb io_type, const Command & cmd, fxl::RefPtr<CommandContext> cmd_context)

    Defined at line 62 of file ../../src/developer/debug/zxdb/console/commands/verb_stdout.cc

  • OutputBuffer FormatSettingStore (ConsoleContext * context, const SettingStore & store)

    Defined at line 75 of file ../../src/developer/debug/zxdb/console/format_settings.cc

  • std::string GetBreakpointMarker ()

    Returns a circle symbol suitable for marking breakpoints in code listings.

    Defined at line 14 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • fxl::RefPtr<BaseType> GetBuiltinType (ExprLanguage lang, std::string_view name)

    Looks up the given type name. If it is a known builtin type name, a symbol defining that type

    will be returned. Otherwise an empty refptr will be returned.

    "void" is a special case: it will be represetned as a kBaseTypeNone variant of a base type

    (normally DWARF would represent void as the absence of a type, but that's not possible here.

    Defined at line 138 of file ../../src/developer/debug/zxdb/expr/builtin_types.cc

  • debug::RegisterID GetRegisterID (debug::Arch arch, const ParsedIdentifier & ident)

    Converts an identifier to a RegisterID. Returns kUnknown if the identifier is

    not a register for the given architecture.

    Defined at line 14 of file ../../src/developer/debug/zxdb/expr/register_utils.cc

  • ErrOrValue ResolveConstValue (const fxl::RefPtr<EvalContext> & context, const Value * value)

    Given a Value that holds a ConstValue (value->const_value().has_value() == true), computes the

    result.

    FUTURE ENHANCEMENT: If ConstValue starts to be used for more things like enumeration values, we

    may want to add a "ConstValue" constructor/getter to ExprValue and remove this.

    Defined at line 15 of file ../../src/developer/debug/zxdb/expr/resolve_const_value.cc

  • void GetReturnValue (const fxl::RefPtr<EvalContext> & context, const Function * func, EvalCallback cb)

    Use immediately following the return instruction of the given non-inline function. This computes

    the return value of the function if possible, and issues the callback with it.

    The callback will be issued reentrantly if the value is known synchronously. The callback

    ExprValue will be valid but empty if the function return type is void.

    Defined at line 108 of file ../../src/developer/debug/zxdb/expr/return_value.cc

  • std::string VmStreamToString (const VmStream & stream)

    Defined at line 9 of file ../../src/developer/debug/zxdb/expr/vm_stream.cc

  • void RunCommandSequence (Console * console, std::vector<std::string> commands, fxl::RefPtr<CommandContext> cmd_context)

    Executes the given list of string commands on the console. It stops until all commands complete

    or there is an error. The callback will be called on either form of completion.

    Defined at line 48 of file ../../src/developer/debug/zxdb/console/command_sequence.cc

  • OutputBuffer FormatException (const ConsoleContext * context, const Thread * thread, const debug_ipc::ExceptionRecord & record)

    Formats the given exception along with some additional information.

    Defined at line 194 of file ../../src/developer/debug/zxdb/console/format_exception.cc

  • ErrOrValue ResolveBitfieldMember (const fxl::RefPtr<EvalContext> & context, const ExprValue & base, const FoundMember & found_member)

    Extracts a member from a collection that's a bitfield.

    Defined at line 39 of file ../../src/developer/debug/zxdb/expr/bitfield.cc

  • std::string to_hex_string (uint8_t i, int digits, bool include_prefix)

    Defined at line 35 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • OutputBuffer FormatHandles (const std::vector<debug_ipc::InfoHandle> & handles, bool hex)

    Formats a table of the handles with minimal information. The order of the table will be the

    same as the input vector. The hex flag prints values in hexadecimal. Otherwise decimal will be

    used.

    Defined at line 70 of file ../../src/developer/debug/zxdb/console/format_handle.cc

  • std::string GetDisabledBreakpointMarker ()

    Defined at line 22 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • std::vector<std::string> ExtractSourceLines (const std::string & contents)

    Extracts all source lines.

    Defined at line 60 of file ../../src/developer/debug/zxdb/symbols/source_util.cc

  • llvm::DWARFUnit * GetUnitWithNameEndingIn (llvm::DWARFContext * context, llvm::DWARFUnitVector & units, const std::string & name)

    Returns the unit in the list with a name ending in the given string. The name is normally the

    file name, so searching for "/foo.cc" will find the unit corresponding to foo.cc (the full path

    in the unit name may be more complicated so don't depend on the particulars of that).

    Defined at line 28 of file ../../src/developer/debug/zxdb/symbols/dwarf_test_util.cc

  • template <typename DerivedType>
    fxl::RefPtr<DerivedType> GetConcreteTypeAs (const FindNameContext & context, const Type * type)

    These variants of GetConcreteType() automatically convert to the requested destination type if

    possible.

    Defined at line 36 of file ../../src/developer/debug/zxdb/expr/resolve_type.h

  • std::string to_hex_string (int16_t i, int digits, bool include_prefix)

    Defined at line 38 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • template <typename DerivedType>
    fxl::RefPtr<DerivedType> GetConcreteTypeAs (const FindNameContext & context, const LazySymbol & symbol)

    Defined at line 42 of file ../../src/developer/debug/zxdb/expr/resolve_type.h

  • template <typename T>
    internal::ReversedAdapter<T> Reversed (T & t)

    Reversed returns a container adapter usable in a range-based "for" statement

    for iterating a reversible container in reverse order.

    Example:

    std::vector

    <int

    > v = ...;

    for (int i : Reversed(v)) {

    // iterates through v from back to front

    }

    Defined at line 47 of file ../../src/developer/debug/zxdb/common/adapters.h

  • VerbRecord GetStatusVerbRecord ()

    Defined at line 103 of file ../../src/developer/debug/zxdb/console/commands/verb_status.cc

  • fxl::RefPtr<Collection> MakeRustTuple (const std::string & name, const std::vector<fxl::RefPtr<Type>> & members)

    To make a regular tuple give it a name according to the types you use in parens, e.g. "(u32,

    Point)", to make a tuple struct, give it a word name like "Foo".

    Defined at line 92 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • Err ResolveVariant (const fxl::RefPtr<EvalContext> & context, const ExprValue & value, const Collection * collection, const VariantPart * variant_part, fxl::RefPtr<Variant> * result)

    Given the VariantPart stored in the given ExprValue, this computes the currently active Variant

    inside the given collection and places it into *result.

    Defined at line 118 of file ../../src/developer/debug/zxdb/expr/resolve_variant.cc

  • bool IsPathAbsolute (const std::string & path)

    Returns true if the given file path is absolute (begins with a slash). The contents could still

    have relative components ("/foo/../bar" is still absolute).

    Defined at line 23 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • std::string to_hex_string (uint16_t i, int digits, bool include_prefix)

    Defined at line 41 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • std::string GetFPString (cpp20::span<const uint8_t> value, int precision)

    Format for float, double and long double. The |precision| sets the amount of digits to be

    written. If 0, the maximum for that particular floating type will be used.

    Defined at line 53 of file ../../src/developer/debug/zxdb/console/string_formatters.cc

  • Err GetUnavailableRegisterErr (debug::RegisterID id)

    Returns a generic error message for register |id|.

    Defined at line 28 of file ../../src/developer/debug/zxdb/expr/register_utils.cc

  • void RunVerbStepsWithSubstatements (Thread * thread, std::vector<SubstatementCall> calls, fxl::RefPtr<CommandContext> cmd_context)

    Runs a "steps" with the given identified substatements. This is exposed for testing so it can be

    run with some canned substatements without having to mock the memory request which the

    substatement code uses.

    Defined at line 117 of file ../../src/developer/debug/zxdb/console/commands/verb_steps.cc

  • OutputBuffer FormatSetting (ConsoleContext * context, const std::string & name, const std::string & description, const SettingValue & value)

    Outputs the detailed information about a particular setting.

    Defined at line 88 of file ../../src/developer/debug/zxdb/console/format_settings.cc

  • OutputBuffer FormatThreadStop (ConsoleContext * context, const Thread * thread, std::optional<StopInfo> info, bool override_show_exception_info)

    For comparison, GDB's printout for a breakpoint hit is:

    Breakpoint 1, main () at eraseme.c:4

    4 printf("Hello\n");

    And LLDB's is:

    * thread #1: tid = 33767, 0x000055555555463e a.out`main + 4 at

    eraseme.c:4, name = 'a.out', stop reason = breakpoint 1.1

    frame #0: 0x000055555555463e a.out`main + 4 at eraseme.c:4

    1 #include

    <stdio

    .h>

    2

    3 int main() {

    -> 4 printf("Hello\n");

    5 return 1;

    6 }

    When stepping, GDB prints out only the 2nd line with source info, and LLDB

    prints out the whole thing with "step over" for "stop reason".

    Defined at line 84 of file ../../src/developer/debug/zxdb/console/format_thread.cc

  • void SyncFillAndDescribeFormatTree (const fxl::RefPtr<EvalContext> & eval_context, FormatNode * node, const FormatOptions & opts)

    A recursive version of SyncFillAndDescribeFormatNode(), this iterates into all children until

    there are no more children.

    Running this on real data can result in infinite recursion if there is a pointer loop.

    Defined at line 45 of file ../../src/developer/debug/zxdb/expr/format_test_support.cc

  • debug_ipc::ExceptionType ToExceptionType (const std::string & shorthand)

    Returns kNone if the shorthand is not recognized.

    Defined at line 11 of file ../../src/developer/debug/zxdb/client/exception_settings.cc

  • Err ParseHostPort (const std::string & input, std::string * out_host, uint16_t * out_port)

    Parse |input| as "host:port", storing the parsed values in |*out_host,*out_port|.

    If "host" is an IPv6 address it must be wrapped in [].

    Defined at line 38 of file ../../src/developer/debug/zxdb/common/inet_util.cc

  • std::string to_hex_string (int32_t i, int digits, bool include_prefix)

    Defined at line 44 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • Err ReadAnalyzeNumAndSizeSwitches (const Command & cmd, std::optional<uint32_t> * out_size)

    Reads the two switches above. The |*out_size| will be unchanged if neither is specified.

    Defined at line 141 of file ../../src/developer/debug/zxdb/console/commands/verb_mem_analyze.cc

  • std::string ExceptionRecordToString (debug::Arch arch, const debug_ipc::ExceptionRecord & record)

    Converts the exception record to a single string describing the exception that occurred.

    Defined at line 243 of file ../../src/developer/debug/zxdb/console/format_exception.cc

  • void AppendPrintCommandSwitches (VerbRecord * record)

    Appends the formatting switches used by GetPrintCommandFormatOptions. These switch values start

    at 1,000,000 so they shouldn't collide with other switch integers.

    Commands using this function to populate their VerbRecord should include the below

    PRINT_COMMAND_SWITCH_HELP in their help.

    Defined at line 33 of file ../../src/developer/debug/zxdb/console/print_command_utils.cc

  • std::string GetBullet ()

    Returns a Unicode bullet in UTF-8.

    Defined at line 27 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • fxl::RefPtr<BaseType> GetBuiltinUnsignedType (ExprLanguage lang, size_t byte_size)

    These will always return a type of rhte given size. If the language doesn't have a built-in for

    the name, one will be made up.

    Defined at line 171 of file ../../src/developer/debug/zxdb/expr/builtin_types.cc

  • ErrOrValue StringToNumber (ExprLanguage lang, std::string_view str)

    Converts the given string to a number. Currently this only handles integers (no floating point).

    It tries to compute a value of the correct type given the input, taking into account size

    suffixes and the magnitude of the number. The rules are somewhat simplified from C++ in that the

    base of the number is not considered and it will pick the smallest type that will fit (C++ has

    different rules for decimal numbers, see the .cc file).

    Defined at line 121 of file ../../src/developer/debug/zxdb/expr/number_parser.cc

  • std::vector<InputLocation> ExpandPermissiveInputLocationNames (const FindNameContext & context, const std::vector<InputLocation> & input)

    Expands the names of the input location(s) to all possible exact globally qualified names.

    Non-symbol-name-based inputs will be unchanged.

    Defined at line 27 of file ../../src/developer/debug/zxdb/expr/permissive_input_location.cc

  • Err ConnectToUnixSocket (const std::string & path, fbl::unique_fd * socket)

    If successful, |socket| will contain a valid socket fd.

    This function will take care for differences each OS has when connecting to a socket

    located on the filesystem.

    Defined at line 182 of file ../../src/developer/debug/zxdb/client/socket_connect.cc

  • std::string to_hex_string (uint32_t i, int digits, bool include_prefix)

    Defined at line 47 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • ErrOr<std::vector<std::string>> ReadCommandsFromFile (const std::string & path)

    Reads each line from a file and returns it in the given vector. This is used to read script files

    into a sequence of commands.

    Defined at line 59 of file ../../src/developer/debug/zxdb/console/command_sequence.cc

  • OutputBuffer GetConnectionStatus (const Session * session)

    Return diagnostic and help information on the given category of stuff.

    Defined at line 108 of file ../../src/developer/debug/zxdb/console/commands/verb_status.cc

  • OutputBuffer FormatHandle (const debug_ipc::InfoHandle & handle, bool hex)

    Formats a detailed summary of a single handle's information. The hex flag prints values in

    hexadecimal. Otherwise decimal will be used.

    Defined at line 89 of file ../../src/developer/debug/zxdb/console/format_handle.cc

  • fxl::RefPtr<BaseType> GetBuiltinFloatType (ExprLanguage lang, size_t byte_size)

    Defined at line 208 of file ../../src/developer/debug/zxdb/expr/builtin_types.cc

  • dap::ResponseOrError<dap::AttachResponse> OnRequestAttach (DebugAdapterContext * ctx, const dap::AttachRequestZxdb & req)

    Defined at line 22 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_attach.cc

  • const char * SettingTypeToString (SettingType )

    Defined at line 18 of file ../../src/developer/debug/zxdb/client/setting_value.cc

  • std::string to_hex_string (int64_t i, int digits, bool include_prefix)

    Defined at line 50 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • ErrOr<ConsoleFormatOptions> GetPrintCommandFormatOptions (const Command & cmd)

    Populates the formatting options with the given command's switches.

    Defined at line 45 of file ../../src/developer/debug/zxdb/console/print_command_utils.cc

  • void FormatTable (std::initializer_list<ColSpec> spec, const std::vector<std::vector<std::string>> & rows, OutputBuffer * out)

    Helper function to save some typing for static column specs.

    Defined at line 56 of file ../../src/developer/debug/zxdb/console/format_table.h

  • void FormatTable (std::initializer_list<ColSpec> spec, const std::vector<std::vector<OutputBuffer>> & rows, OutputBuffer * out)

    Defined at line 60 of file ../../src/developer/debug/zxdb/console/format_table.h

  • void OnRequestStackTrace (DebugAdapterContext * ctx, const dap::StackTraceRequest & req, std::function<void (dap::ResponseOrError<dap::StackTraceResponse>)> callback)

    Defined at line 60 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_stacktrace.cc

  • void WriteBitfieldToMemory (const fxl::RefPtr<EvalContext> & context, const ExprValueSource & dest, std::vector<uint8_t> data, fit::callback<void (const Err &)> cb)

    Writes the data to a "source" specification that's a bitfield. The data should contain the

    little-endian representation of the numeric value of the bitfield.

    Defined at line 121 of file ../../src/developer/debug/zxdb/expr/bitfield.cc

  • OutputBuffer GetFilterStatus (ConsoleContext * context)

    Defined at line 148 of file ../../src/developer/debug/zxdb/console/commands/verb_status.cc

  • void EvalBinaryOperator (const fxl::RefPtr<EvalContext> & context, const ExprValue & left_value, const ExprToken & op, const ExprValue & right_value, EvalCallback cb)

    This version takes evaluated values and so can not support short-circuiting for || and

    &

    &

    .

    Shor-circuiting is implemented in the bytecode emitted by the BinaryOpNode.

    Defined at line 634 of file ../../src/developer/debug/zxdb/expr/eval_operators.cc

  • llvm::DWARFDie GetFirstDieOfTagAndName (llvm::DWARFContext * context, llvm::DWARFUnit * unit, llvm::dwarf::Tag tag, const std::string & name)

    Returns the first DIE in the unit with the matching tag and DW_AT_Name attribute. If not found,t

    he returned DIE will be !isValid().

    Defined at line 39 of file ../../src/developer/debug/zxdb/symbols/dwarf_test_util.cc

  • std::string to_hex_string (uint64_t i, int digits, bool include_prefix)

    Defined at line 53 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • OutputBuffer GetJobStatus (ConsoleContext * context)
  • void ResolveArray (const fxl::RefPtr<EvalContext> & eval_context, const Type * original_type, const ExprValue & array, size_t begin_index, size_t end_index, fit::callback<void (ErrOrValueVector)> )

    Converts the given array type (could be a pointer or a static array type like "int[4]") to

    a vector of ExprValues. Since this requires memory fetches is must be asynchronous.

    The input will be clipped to the array size so the result may be empty or smaller than requested.

    This does not apply pretty types for item resolution.

    Defined at line 208 of file ../../src/developer/debug/zxdb/expr/resolve_array.cc

  • void ResolveFunction (const fxl::RefPtr<EvalContext> & eval_context, const ParsedIdentifier & fn_name, const std::vector<ExprValue> & params, fit::callback<void (ErrOr<FunctionCallInfo>)> cb)

    Tries to resolve and extract the given function name to a Function symbol.

    There are several cases that currently return an error, but will be

    implemented eventually:

    * |fn_name| resolves to multiple locations

    * |params| is not empty

    These features are being tracked in https://fxbug.dev/42132103.

    An error is also returned in the case where |fn_name| resolves to no

    locations or the function has been inlined.

    Defined at line 144 of file ../../src/developer/debug/zxdb/expr/resolve_function.cc

  • BreakpointAction BreakpointActionHighestPrecedence (BreakpointAction a, BreakpointAction b)

    Returns the action that takes precedence. If two breakpoints are hit at the same time and they

    each report different actions, the one with the highest precedence is the action taken.

    Defined at line 11 of file ../../src/developer/debug/zxdb/client/breakpoint_action.cc

  • bool Ipv6HostPortIsMissingBrackets (const std::string & input)

    Return true if |input| looks like "ipv6:port" with "ipv6" not wrapped in brackets.

    Return false in all other cases.

    Defined at line 63 of file ../../src/developer/debug/zxdb/common/inet_util.cc

  • std::string to_hex_string (int128_t i, int digits, bool include_prefix)

    Format the 128-bit numbers as two 64-bit ones.

    Defined at line 58 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • template <typename Data>
    std::vector<uint8_t> AsData (Data d)

    Defined at line 82 of file ../../src/developer/debug/zxdb/client/minidump_unittest.cc

  • Err TokenizeCommand (const std::string & input, std::vector<CommandToken> * result)

    Converts the given string to a series of tokens. This is used by ParseCommand and is exposed

    separate for testing purposes.

    Defined at line 551 of file ../../src/developer/debug/zxdb/console/command_parser.cc

  • OutputBuffer GetProcessStatus (ConsoleContext * context)

    Defined at line 162 of file ../../src/developer/debug/zxdb/console/commands/verb_status.cc

  • OutputBuffer FormatThreadConcise (const ConsoleContext * context, const Thread * thread)

    Returns an OutputBuffer with a short one-line description of |thread|. No source or exception

    information will be printed, even if available.

    Defined at line 155 of file ../../src/developer/debug/zxdb/console/format_thread.cc

  • std::string GetExclamation ()

    Returns the exclamation-point-in-triangle emoji. This includes a space after it since this

    character is a wide emoji.

    Defined at line 32 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • ErrOr<TargetPointer> ExtractPointerValue (const ExprValue & value)

    Extracts the address value from the ExprValue, assuming it's a pointer or reference.

    Defined at line 74 of file ../../src/developer/debug/zxdb/expr/resolve_ptr_ref.cc

  • OutputBuffer FormatSettingShort (ConsoleContext * context, const std::string & name, const SettingValue & value, int list_indent)

    Formats the setting to just show the value. Since lists go on separate different lines,

    list_indent can be used to insert spaces to the left of each.

    Defined at line 109 of file ../../src/developer/debug/zxdb/console/format_settings.cc

  • void EvalExpression (const std::string & input, const fxl::RefPtr<EvalContext> & context, bool follow_references, EvalCallback cb)

    Main entrypoint to evaluate an expression. This will parse the input, execute the result with the

    given context, and call the callback when complete.

    If follow_references is set, expressions that result in a reference will have the value of the

    referenced data computed. This is useful when the caller wants the result value of an expression

    but doesn't care about the exact type.

    The callback may get issued asynchronously in the future or it may get called synchronously in a

    reentrant fashion from this function.

    Defined at line 53 of file ../../src/developer/debug/zxdb/expr/expr.cc

  • ErrOrValue RegisterDataToValue (ExprLanguage lang, debug::RegisterID id, VectorRegisterFormat vector_fmt, cpp20::span<const uint8_t> data)

    Converts |data| into an ExprValue with the given |id|. The format for

    non-vector registers will be looked up based on |id|. |lang| will determine

    the builtin Type symbol that will represent the register data.

    Defined at line 32 of file ../../src/developer/debug/zxdb/expr/register_utils.cc

  • ErrOr<std::string> GetActiveRustVariantName (const fxl::RefPtr<EvalContext> & context, const ExprValue & value)

    Returns the short name of the active Rust enum value (for example, this will be "Some" or "None"

    for an Option). If the struct doesn't look like a Rust enum, returns an error.

    Defined at line 169 of file ../../src/developer/debug/zxdb/expr/resolve_variant.cc

  • VariableLocation DecodeVariableLocation (llvm::DWARFUnit * unit, const llvm::DWARFFormValue & form, const UncachedLazySymbol & source)

    Decodes the variable location contained in the given form value. It's assumed the form value

    contains either a block, an ExprLoc, or an offset into the .debug_loc section.

    The source is the symbol that created this location entry, it will be passed to the

    VariableLocation.

    On error this will return an empty VariableLocation.

    Defined at line 167 of file ../../src/developer/debug/zxdb/symbols/dwarf_location.cc

  • const char * FunctionStepToString (FunctionStep )

    Defined at line 42 of file ../../src/developer/debug/zxdb/client/function_step.cc

  • std::string to_hex_string (uint128_t i, int digits, bool include_prefix)

    Defined at line 61 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • OutputBuffer GetLimboStatus (const std::vector<debug_ipc::ProcessRecord> & limbo)

    Defined at line 180 of file ../../src/developer/debug/zxdb/console/commands/verb_status.cc

  • fxl::RefPtr<Type> MakeStringLiteralType (size_t length)

    Makes a type that can hold the raw string bytes of the given length. This always returns a

    C-style string array "char[length]". Rust's "&str" type is actually a structure with a pointer

    which we can't store as a literal in debugger client memory, and users expect an array

    "[char; 3]" to be printed as ['a', 'b', 'c'] instead of a string.

    Defined at line 115 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • fxl::RefPtr<BaseType> MakeInt16Type ()

    Returns a type that can hold 4/8-byte [un]signed integers.

    Defined at line 19 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • ErrOr<std::vector<debug_ipc::UpdateGlobalSettingsRequest::UpdateExceptionStrategy>> ParseExceptionStrategyUpdates (const std::vector<std::string> & second_chance_shorthands)

    Given a list of exception type shorthands, this utility returns the list of

    request objects to update the strategies of those types as second-chance

    and their complement as first-chance.

    Defined at line 26 of file ../../src/developer/debug/zxdb/client/exception_settings.cc

  • void EvalUnaryOperator (const fxl::RefPtr<EvalContext> & context, const ExprToken & op_token, const ExprValue & value, EvalCallback cb)

    UBSan complains about the overflow of -INT32_MAX but our tests cover that.

    Defined at line 832 of file ../../src/developer/debug/zxdb/expr/eval_operators.cc

  • std::vector<Location> ResolvePermissiveInputLocations (const ProcessSymbols * process_symbols, const ResolveOptions & resolve_options, const FindNameContext & context, const std::vector<InputLocation> & input)

    An alternate implementation of this function could get the actual symbol objects from the

    FindName results (function, variable), and then do a symbol lookup on that to get the full

    InputLocation. Basically InputLocation would have another "symbol object" mode that would take

    a RefPtr

    <Symbol

    > to look up.

    The advantage of that implementation is that it saves the symbol name lookup when we go to the

    ResolveInputLocation() call. Not round-tripping through names also helps remove some potential

    ambiguity about what we're referring to if there are multiple matches.

    The disadvantage is that the implementation is more complicated, especially since symbol objects

    don't currently have any ModuleSymbol information associated with them.

    TODO(bug 37608) Revisit this design when symbols know their modules. This might make the above

    design more desirable.

    Defined at line 75 of file ../../src/developer/debug/zxdb/expr/permissive_input_location.cc

  • Err ParseCommand (const std::string & input, Command * output)

    Defined at line 598 of file ../../src/developer/debug/zxdb/console/command_parser.cc

  • fxl::RefPtr<Type> GetConcreteType (const FindNameContext & context, const Type * type)

    Strips C-V qualifications and resolves forward declarations.

    This is the function to use to properly resolve the type to something there the data of the

    ExprValue can be interpreted.

    It will return null only if the input type is null. Sometimes forward declarations can't be

    resolved or the "const" refers to nothing, in which case this function will return the original

    type.

    The variant that takes a LazySymbol will extract the symbol and will additionally return null if

    the symbol is not a type.

    Defined at line 17 of file ../../src/developer/debug/zxdb/expr/resolve_type.cc

  • fxl::RefPtr<BaseType> MakeInt32Type ()

    Defined at line 23 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • OperatorKeywordResult ParseOperatorKeyword (const std::vector<ExprToken> & tokens, size_t keyword_token)

    This extracts the built-in operator names like "operator++" and "operator()". It does not

    parse type conversion function names like "operator bool". The ExprParser will handle that.

    The token corresponding to the "operator" keyword itself is passed in as an argument. The

    end_token in the result will indicate the tokens consumed.

    Defined at line 106 of file ../../src/developer/debug/zxdb/expr/operator_keyword.cc

  • fxl::RefPtr<Variable> MakeVariableForTest (const std::string & name, fxl::RefPtr<Type> type, VariableLocation loc)

    Returns a Variable for the given range with the given location description.

    Example:

    #include "llvm/BinaryFormat/Dwarf.h"

    auto var = MakeVariableForTest(

    "var", my_type, 0x1000, 0x2000, { llvm::dwarf::DW_OP_reg0 });

    For a type that's always valid use the VariableLocation() variant:

    auto var = MakeVariableForTest(

    "var", my_type, VariableLocation(DwarfExpr({ llvm::dwarf::DW_OP_reg0 })));

    This variant also allows all of the more complex variants like multiple valid ranges.

    Defined at line 13 of file ../../src/developer/debug/zxdb/symbols/variable_test_support.cc

  • std::string GetRightArrow ()

    Rightward pointing arrow used for pointers and such.

    Defined at line 39 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • std::string GetFormatNodeTypeAndDescription (const FormatNode * node)

    Returns either:

    <type

    >,

    <description

    >

    if it's valid, or:

    Err:

    <err

    _message>

    if there's an error.

    Defined at line 52 of file ../../src/developer/debug/zxdb/expr/format_test_support.cc

  • fxl::RefPtr<Type> GetConcreteType (const FindNameContext & context, const LazySymbol & symbol)

    Defined at line 56 of file ../../src/developer/debug/zxdb/expr/resolve_type.cc

  • fxl::RefPtr<BaseType> MakeUint32Type ()

    Defined at line 27 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • VisitResult VisitLocalBlocks (const CodeBlock * starting, fit::function<VisitResult (const CodeBlock *)> cb)

    Calls the callback for all code blocks, going backwards in the hierarchy. The starting block is

    called first. Stops iterating when it hits a function boundary.

    The visited blocks will normally not outlive this call. If the caller wants to get any

    symbol objects out of the visitation callback, it should take references to it.

    Defined at line 104 of file ../../src/developer/debug/zxdb/symbols/visit_scopes.cc

  • fxl::RefPtr<BaseType> MakeInt64Type ()

    Defined at line 31 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • void FillFormatNodeValue (FormatNode * node, const fxl::RefPtr<EvalContext> & context, fit::deferred_callback cb)

    Fills the value() of a FormatNode based on its expression. This does not update the description

    based on the new value. The node can be in any state and this function will fill the value if

    possible.

    The callback will be called on completion. This may occur synchronously (within the stack of this

    function call) or in the future. If it happens in the future, the node will be referenced by weak

    pointer so the caller does not have to worry about lifetime issues.

    The callback will always be issued, even if the node is destroyed. Callers should keep a weak

    pointer to the node if they do not control its lifetime.

    TODO(brettw) should this be a member of FormatNode?

    Defined at line 614 of file ../../src/developer/debug/zxdb/expr/format.cc

  • fxl::RefPtr<Variable> MakeVariableForTest (const std::string & name, fxl::RefPtr<Type> type, uint64_t begin_ip_range, uint64_t end_ip_range, DwarfExpr location_expression)

    Defined at line 23 of file ../../src/developer/debug/zxdb/symbols/variable_test_support.cc

  • bool PathEndsWith (std::string_view path, std::string_view right_query)

    Returns true if the given |path| matches the |right_query| from the right-hand side. This

    requires both that the |path| end in |right_query| (case-sensitive) AND the start of the match is

    either the beginning of |path| or immediately following a path separator.

    Examples:

    path = "foo.cc", right_query = "foo.cc" => TRUE

    path = "bar/foo.cc", right_query = "foo.cc" => TRUE

    path = "foo.cc", right_query = "o.cc" => FALSE

    Defined at line 25 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • OutputBuffer FormatSettingValue (ConsoleContext * context, const SettingValue & value)

    Formats an individual setting value. This is the low-level formatting and

    doesn't do any special handling for lists (it will be just space-separated).

    Defined at line 124 of file ../../src/developer/debug/zxdb/console/format_settings.cc

  • std::optional<ExprLanguage> FileNameToLanguage (const std::string & name)

    Attempts to determine the source language corresponding to a given file name. Returns nullopt

    if no explicit match.

    Defined at line 12 of file ../../src/developer/debug/zxdb/expr/expr_language.cc

  • fxl::RefPtr<Type> AddCVQualifiersToMatch (const Type * reference, fxl::RefPtr<Type> modified)

    Matches C-V qualifiers (+restrict) present on the reference type and adds them to the modified

    type.

    Defined at line 120 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • fxl::RefPtr<BaseType> MakeUint64Type ()

    Defined at line 35 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • OutputBuffer FormatRegisters (const FormatRegisterOptions & options, const std::vector<debug::RegisterValue> & registers)

    Format the given registers into a console readable format.

    Defined at line 60 of file ../../src/developer/debug/zxdb/console/format_register.cc

  • void ResolveArrayItem (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & array, size_t index, EvalCallback cb)

    Resolves a single item in an array and applies pretty types for item resolution. This is the

    backend for array access [

    <number

    > ] in expressions.

    Defined at line 218 of file ../../src/developer/debug/zxdb/expr/resolve_array.cc

  • void EvalExpressions (const std::vector<std::string> & inputs, const fxl::RefPtr<EvalContext> & context, bool follow_references, fit::callback<void (std::vector<ErrOrValue>)> cb)

    Like EvalExpressions but evaluates a sequence of expressions, issuing the callback when they're

    all complete. The size order of the results in the callback vector will correspond to the inputs.

    Defined at line 87 of file ../../src/developer/debug/zxdb/expr/expr.cc

  • template <typename T>
    std::string to_bin_string (T i, int digits, bool include_prefix, char byte_separator)

    Similar to to_hex_string but additional can optionally write byte separators. If nonzero, the

    given byte_separator characer will be output for every 8 bits.

    Defined at line 76 of file ../../src/developer/debug/zxdb/common/string_util.cc

  • void SplitDapCommand (const dap::string & cmd_string, dap::array<dap::string> & cmd)

    Split a command string separated by whitespaces into an array of strings (required by

    RunInTerminal request).

    Defined at line 23 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_launch.cc

  • std::optional<bool> StringToBool (std::string_view )

    Converts to/from "0"/"1"/"true"/"false". This is used for formatting internal values like

    settings rather than language strings.

    Defined at line 46 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • bool NameHasTemplate (std::string_view name)

    Defined at line 134 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • fxl::RefPtr<BaseType> MakeFloatType ()

    Defined at line 39 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • const char * BoolToString (bool )

    Defined at line 54 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • fxl::RefPtr<BaseType> MakeDoubleType ()

    Defined at line 43 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • OutputBuffer FormatSymbol (const ProcessSymbols * process_symbols, const Symbol * symbol, const FormatSymbolOptions & opts)

    Dumps the symbol information and returns a formatted buffer. The ProcessSymbols can be null but

    this means all offsets will be printed as relative, and no forward-declared types can be

    resolved (some information might be missing).

    Defined at line 507 of file ../../src/developer/debug/zxdb/console/format_symbol.cc

  • Err ParseGlobalInputLocation (const Location & location, const std::string & input, InputLocation * output)

    Parses a given input from the user to an InputLocation. Symbolic names ("MyFunction") are treated

    as global names and there is no processing done on these. For context-aware handling of function

    names, see ParseLocalInputLocation.

    The Location is used to resolve line numbers in the current file. The location need not have a

    current file (it can be an empty location or an unsymbolized one) in which case numeric input

    will fail.

    This does not handle the case where no location is specified (some commands, like "break", might

    use this to indicate the current location, but many other commands don't support this format).

    This does not handle expressions, see EvalGlobalInputLocation() below.

    Defined at line 87 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • dap::ResponseOrError<dap::LaunchResponse> OnRequestLaunch (DebugAdapterContext * context, const dap::LaunchRequestZxdb & req)

    Defined at line 39 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_launch.cc

  • void ResolvePointer (const fxl::RefPtr<EvalContext> & eval_context, uint64_t address, fxl::RefPtr<Type> type, EvalCallback cb)

    Creates an ExprValue of the given type from the data at the given address. Issues the callback on

    completion. The type can be null (it will immediately call the callback with an error).

    It's assumed the type is already concrete (so it has a size). This will not do any fancy stuff

    like casting to a derived type. It is a low-level function that just fetches the requested

    memory.

    Defined at line 81 of file ../../src/developer/debug/zxdb/expr/resolve_ptr_ref.cc

  • ModuleIndexerResult IndexModule (fxl::WeakPtr<ModuleSymbols> module_symbols, DwarfBinary & binary, const std::string & build_dir)

    Index the given DwarfBinary, loading and indexing any .dwo files it references.

    Note the usage of the DwarfBinary doesn't really change anything but it causes a bunch of caching

    stuff on the LLVM objects that require a non-const reference.

    Defined at line 149 of file ../../src/developer/debug/zxdb/symbols/module_indexer.cc

  • std::string CatPathComponents (const std::string & first, const std::string & second)

    Concatenates the two path components with a slash in between them. "first" can end with a slash

    or not. The second component shouldn't begin with a slash.

    Defined at line 30 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • void FormatGeneralRegisters (const std::vector<debug::RegisterValue> & registers, OutputBuffer * out)

    Formats the given registers as platform-independent values/vectors.

    Defined at line 82 of file ../../src/developer/debug/zxdb/console/format_register.cc

  • ErrOr<ParsedSetCommand> ParseSetCommand (const std::string & input)

    Grammar:

    command :=

    <name

    > [

    <whitespace

    > ] [

    <operator

    >

    <whitespace

    > ] [

    <value

    > * ]

    name := ('A' - 'Z') | ('a' - 'z') | '-' // See IsSettingNameChar() for qualifications.

    operator := "=" | '+=' | '-='

    A "value" is a possibly quoted string parsed as a command token. The whole thing can't be parsed

    as a command because we want to handle "name value" as well as "name = value" and "name=value".

    Defined at line 680 of file ../../src/developer/debug/zxdb/console/verbs_settings.cc

  • void AddTemplateParameterToName (std::string & original, const char * type_name)

    Defined at line 136 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • fxl::RefPtr<Variable> MakeUint64VariableForTest (const std::string & name, VariableLocation loc)

    Like above but marks the variable as having an unsigned 64-bit int type.

    Defined at line 37 of file ../../src/developer/debug/zxdb/symbols/variable_test_support.cc

  • OutputBuffer FormatMemory (const MemoryDump & dump, uint64_t begin, uint32_t size, const MemoryFormatOptions & opts)

    Optimized for simplicity over speed. But this does not use the table output to avoid having giant

    table computations for large memory dumps.

    Defined at line 41 of file ../../src/developer/debug/zxdb/console/format_memory.cc

  • void PromotePtrRefToDerived (const fxl::RefPtr<EvalContext> & context, PromoteToDerived what, ExprValue value, EvalCallback cb)

    Promotes a pointer/reference type to its derived class if possible. If unknown or there's any

    error, the input value will be given to the callback (the callback will never report an error,

    but is an EvalCallback for consistency).

    This will promote pointers (Base* -> Derived*), references (Base

    &

    -> Derived

    &

    ). It will

    NOT promote actual objects (Base -> Derived). From a language perspective, all base classes will

    need to be passed as a pointer or a reference so this operation will pick up all cases. And

    trying to do this on all types will be much slower since it will trigger for everything.

    Defined at line 121 of file ../../src/developer/debug/zxdb/expr/resolve_base.cc

  • fxl::RefPtr<BaseType> MakeSignedChar8Type ()

    Defined at line 47 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • Err OutputSourceContext (Process * process, std::unique_ptr<SourceFileProvider> file_provider, const Location & location, SourceAffinity source_affinity)

    Formats the given location and writes it to the console.

    If the location is symbolized and the source affinity is not "assembly", a source-code dump will

    be displayed. Otherwise, a disassembly dump will be displayed.

    Disassembly dumps will be done asynchronously since the memory must be requested from the target

    system. Source dumps will be synchronous.

    An error will be returned if the location is symbolized but the file can't be found or doesn't

    contain that line. In this case, nothing will be output.

    Defined at line 275 of file ../../src/developer/debug/zxdb/console/format_context.cc

  • void FormatGeneralVectorRegisters (const FormatRegisterOptions & options, const std::vector<debug::RegisterValue> & registers, OutputBuffer * out)

    Defined at line 95 of file ../../src/developer/debug/zxdb/console/format_register.cc

  • fxl::RefPtr<Variable> MakeUint64VariableForTest (const std::string & name, uint64_t begin_ip_range, uint64_t end_ip_range, DwarfExpr location_expression)

    Defined at line 43 of file ../../src/developer/debug/zxdb/symbols/variable_test_support.cc

  • void DwarfExprToValue (UnitSymbolFactory symbol_factory, const fxl::RefPtr<EvalContext> & eval_context, const SymbolContext & symbol_context, DwarfExpr expr, fxl::RefPtr<Type> type, EvalCallback cb)

    Evaluates the given DWARF expression and calls the callback with the result, using the given

    type. See file comment above.

    Defined at line 14 of file ../../src/developer/debug/zxdb/expr/eval_dwarf_expr.cc

  • FunctionStep GetFunctionStepAction (Thread * thread)

    If anything goes wrong, this function returns kDefault to indicate nothing special should happen.

    The calling code would then either stop or continue as it would normally.

    Defined at line 58 of file ../../src/developer/debug/zxdb/client/function_step.cc

  • fxl::RefPtr<BaseType> MakeUnsignedChar8Type ()

    Defined at line 51 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • void ResolveMember (const fxl::RefPtr<EvalContext> & context, const ExprValue & base, const FoundMember & member, EvalCallback cb)

    Resolves a member given a collection (class/struct/union) and either a record for a variable

    within that collection (in this case the data member must be on the class itself, not on a base

    class), or a name of a member.

    These will be synchronous in most cases, but resolving static members may require requesting the

    memory from the target which will force an asynchronous result.

    The FoundMember may have no data member in it. If so, calls the callback with an error (this is

    so callers don't have to type check the inputs).

    Defined at line 223 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • void AddAllTemplateParametersToName (std::string & name, const std::vector<LazySymbol> & template_params)

    Defined at line 155 of file ../../src/developer/debug/zxdb/symbols/symbol_utils.cc

  • VariableLocation DecodeDwarf4LocationList (TargetPointer unit_base_addr, cpp20::span<const uint8_t> data, const UncachedLazySymbol & source)

    Low-level decode for a DWARF 4 variable location description. The data should start at the

    beginning of the location list to parse, and cover as much data as the location list could

    possibly cover (normally the end of the .debug_loc section).

    The source is the symbol that created this location entry, it will be passed to the

    VariableLocation.

    On error this will return an empty VariableLocation.

    Defined at line 187 of file ../../src/developer/debug/zxdb/symbols/dwarf_location.cc

  • Err AssertRunningTarget (ConsoleContext * context, const char * command_name, Target * target)

    Ensures the target is currently running (it has a current Process associated with it. If not,

    generates an error of the form "<command_name> requires a running target".

    Defined at line 63 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • std::string GetDebugTreeForFormatNode (const FormatNode * node)

    Fills the node's contents into a text structure, with each level indented two spaces. This does

    not fill node values or describe the nodes.

    <name

    > =

    <type

    >,

    <description

    >

    <child

    name> =

    <child

    type>,

    <child

    description>

    <child

    level 2 name> =

    <child

    2 type>,

    <child

    2 description>

    <child

    name> =

    <child

    type>,

    <child

    description>

    Defined at line 58 of file ../../src/developer/debug/zxdb/expr/format_test_support.cc

  • ErrOr<ExecutionScope> ParseExecutionScope (ConsoleContext * console_context, const std::string & input)

    Parses an execution scope argument. This is exposed for unit testing.

    Defined at line 760 of file ../../src/developer/debug/zxdb/console/verbs_settings.cc

  • ErrOrValue ResolveSingleVariantValue (const fxl::RefPtr<EvalContext> & context, const ExprValue & value, fxl::RefPtr<DataMember> * member)

    Extracts the first variant value in the given collection. Practically, this means it returns

    the current active data from a Rust enum.

    DWARF supports multiple variant values but the only case we have for this is Rust enums which

    only have a single value (it will be a tuple or a struct if the user wants more than one thing

    stored in the enum). This function will fail if there is more than one data member in the

    variant.

    The current active data member can be returned optionally.

    Defined at line 180 of file ../../src/developer/debug/zxdb/expr/resolve_variant.cc

  • std::string NormalizePath (const std::string & path)

    Resolves "." and ".." components to the extent possible. If there are leading "..", then they

    will be preserved.

    Defined at line 45 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • ErrOr<FormatSymbolOptions> GetFormatSymbolOptionsFromCommand (const Command & cmd, int expr_switch)

    Reads the FormatSymbolOptions for the given command. The expr_switch is the switch index that

    specifies how DWARF expressions should be printed.

    Defined at line 529 of file ../../src/developer/debug/zxdb/console/format_symbol.cc

  • fxl::RefPtr<BaseType> MakeRustCharType ()

    Defined at line 55 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • void ResolveMember (const fxl::RefPtr<EvalContext> & context, const ExprValue & base, const ParsedIdentifier & identifier, EvalCallback cb)

    Defined at line 230 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • ErrOr<VariableDeclTypeInfo> GetVariableDeclTypeInfo (ExprLanguage lang, fxl::RefPtr<Type> concrete_type)

    Decodes any auto type specifiers for the variable declaration of the given type.

    Defined at line 134 of file ../../src/developer/debug/zxdb/expr/variable_decl.cc

  • std::string_view SpecialIdentifierToString (SpecialIdentifier i)

    The input and output strings should includes the "$" but no parens, so kMain -> "$main" and kPlt

    -> "$plt". SpecialIdentifierToString returns the empty string for kNone and "$" for kEscaped.

    StringToSpecialIdentifier return kNone if there's no match.

    Defined at line 60 of file ../../src/developer/debug/zxdb/symbols/identifier_base.cc

  • fxl::RefPtr<ModifiedType> MakeRustCharPointerType ()

    Defined at line 61 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • std::vector<std::string> GetCommandCompletions (const std::string & input, const FillCommandContextCallback & fill_context)

    It would be nice to do more context-aware completions. For now, just

    complete based on all known nouns and verbs.

    Defined at line 611 of file ../../src/developer/debug/zxdb/console/command_parser.cc

  • SpecialIdentifier StringToSpecialIdentifier (std::string_view name)

    Defined at line 67 of file ../../src/developer/debug/zxdb/symbols/identifier_base.cc

  • void FillFormatNodeDescription (FormatNode * node, const FormatOptions & options, const fxl::RefPtr<EvalContext> & context, fit::deferred_callback cb)

    Fills the description and children of a FormatNode based on the current value().

    The callback will be called on completion. This may occur synchronously (within the stack of this

    function call) or in the future. If it happens in the future, the node will be referenced by weak

    pointer so the caller does not have to worry about lifetime issues.

    The callback will always be issued, even if the node is destroyed. Callers should keep a weak

    pointer to the node if they do not control its lifetime.

    Defined at line 647 of file ../../src/developer/debug/zxdb/expr/format.cc

  • VisitResult VisitClassHierarchy (const Collection * starting, fit::function<VisitResult (const InheritancePath &)> cb)

    Calls the callback for all classes in the inheritance hierarchy of the given collection. This

    works backwards, first calling the callback with the |starting| input, then a depth-first

    traversal of the inheritance tree.

    The callback gives the path from the input derived class to the current base class being

    iterated over.

    Watch out, the classes in the InheritancePath may not necessarily be concrete so call

    GetConcreteType() as necessary.

    Defined at line 121 of file ../../src/developer/debug/zxdb/symbols/visit_scopes.cc

  • std::time_t GetFileModificationTime (const std::string & path)

    Returns the modification time of the given file, or 0 if it could not be determined.

    Defined at line 49 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • size_t UnicodeCharWidth (const std::string & str)

    Returns the number of Unicode characters in the given UTF-8 string. This attempts to predict how

    many spaces the given string will take up when printed to a Unicode-aware text console.

    NOTE: This function currently doesn't handle any combining accents which it seems modern Linux

    terminals do handle. It obviously doesn't handle complicated things like ligatures and Arabic

    which we assume you're not typing into the console and expecting to be aligned anyway.

    Defined at line 56 of file ../../src/developer/debug/zxdb/console/string_util.cc

  • void CoerceArraySize (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & array, size_t new_size, EvalCallback cb)

    Forces an array to one of a different size.

    Converts a pointer to a static array of the given size by fetching the corresponding memory.

    Converts a static array's type to represent the new size. For example, resizing an array of

    type "double[16]" to length 8 will copy the data and the new type will be "double[8]". To

    support expanding the length of a static array, the memory will be fetched according to the

    source of the static array (if there is no memory as the source of the array it will fail).

    Defined at line 246 of file ../../src/developer/debug/zxdb/expr/resolve_array.cc

  • void ResolvePointer (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & pointer, EvalCallback cb)

    Similar to the above but the pointer and type comes from the given ExprValue, which is assumed to

    be a pointer type. If it's not a pointer type, the callback will be issued with an error.

    This will automatically cast to a derived type if the EvalContext requests it, so the resulting

    object may be a different type or from a different address than the input pointer value.

    Defined at line 108 of file ../../src/developer/debug/zxdb/expr/resolve_ptr_ref.cc

  • OutputBuffer FormatIdentifier (const Identifier & str, const FormatIdentifierOptions & options)

    Formats the given string as an identifier, with any template annotations dimmed.

    If |show_global_qual| is set, the output will be preceeded with "::" if it's globally qualified.

    Otherwise, global qualifications on the identifier will be ignored. Callers may want to ignore

    the global qualifiers in cases where it's clear in context whether the name is global or not.

    For example, function names in backtraces are always global and adding "::" to everything adds

    noise.

    If |bold_last| is set, the last identifier component will be bolded. This is best when printing

    function names.

    Defined at line 187 of file ../../src/developer/debug/zxdb/console/format_name.cc

  • bool DoesBeginRustLifetime (std::string_view input)

    Returns true if the string begins a Rust lifetime literal. This requires some disambiguation

    because 'a is a lifetime but 'a' is a character.

    Defined at line 244 of file ../../src/developer/debug/zxdb/expr/parse_string.cc

  • fxl::RefPtr<ModifiedType> MakeCharPointerType ()

    Makes a "char*" as for C strings using a signed 8-bit character.

    Defined at line 68 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • void DwarfExprEvalToValue (const fxl::RefPtr<EvalContext> & context, DwarfExprEval & eval, fxl::RefPtr<Type> type, EvalCallback cb)

    Helper function which, given a completed DwarfExprEval, attempts to convert its result to the

    given type and executes the given callback.

    Defined at line 24 of file ../../src/developer/debug/zxdb/expr/eval_dwarf_expr.cc

  • Err ValueToAddressAndSize (const fxl::RefPtr<EvalContext> & context, const ExprValue & value, uint64_t * address, std::optional<uint32_t> * size)

    Determines the memory location that the given value refers to. It is used by the frontend to get

    the address of what the user meant when they typed an expression.

    If the result has a type with a known size, that size will be put into *size. Otherwise it will

    be untouched (for example, raw numbers will be converted to pointers that have no intrinsic

    size).

    TODO(bug 44074) support non-pointer values and take their address implicitly.

    Defined at line 100 of file ../../src/developer/debug/zxdb/expr/expr.cc

  • std::string GetDebugTreeForValue (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & value, const FormatOptions & opts)

    Formats and describes the given ExprValue according to GetDebugTreeForExprValue() above.

    Note that normally the root name will be empty so it will start with " = <type>, <description>"

    Defined at line 64 of file ../../src/developer/debug/zxdb/expr/format_test_support.cc

  • std::vector<LineMatch> GetAllLineTableMatchesInUnit (const LineTable & line_table, const std::string & full_path, int line)

    Searches the given line table for the given file/line. Finds the smallest line greater than or

    equal to the input line and returns all instances of that line.

    Defined at line 24 of file ../../src/developer/debug/zxdb/symbols/find_line.cc

  • OutputBuffer FormatIdentifier (const ParsedIdentifier & str, const FormatIdentifierOptions & options)

    This annoyingly duplicates Identifier::GetName but is required to get syntax highlighting for all

    the components.

    Defined at line 194 of file ../../src/developer/debug/zxdb/console/format_name.cc

  • const char * SyntaxToString (Syntax )

    Defined at line 116 of file ../../src/developer/debug/zxdb/console/output_buffer.cc

  • std::vector<OutputBuffer> DescribeRegister (const debug::RegisterValue & reg, TextForegroundColor color)

    Formats the register and returns a vector with the following information:

    - name

    - hex value

    - comment (may be empty if inapplicable).

    Defined at line 172 of file ../../src/developer/debug/zxdb/console/format_register.cc

  • const char * VectorRegisterFormatToString (VectorRegisterFormat fmt)

    Defined at line 29 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

  • void EvalGlobalInputLocation (const fxl::RefPtr<EvalContext> eval_context, const Location & location, const std::string & input, fit::callback<void (ErrOr<InputLocation>, std::optional<uint32_t>)> cb)

    Like ParseGlobalInputLocation() but also accepts expressions preceeded with a "*". Because

    evaluating expressions may be asynchronous, this function is too.

    If the input location is an expression and the thing it points to has an intrinsic size, that

    size will be passed as the second parameter of the callback.

    The callback follows "expression" rules in that it will be evaluted from within the stack of this

    function if the result is synchronously available.

    Defined at line 143 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • OutputBuffer FormatLocation (const Location & loc, const FormatLocationOptions & opts)

    Formats the location.

    Defined at line 28 of file ../../src/developer/debug/zxdb/console/format_location.cc

  • void FormatNumericNode (FormatNode * node, const FormatOptions & options)

    Formatter for numbers. This assumes the type of the value in the given node has already been

    determined to be numeric. This may also be called as a fallback for things like enums.

    Defined at line 674 of file ../../src/developer/debug/zxdb/expr/format.cc

  • fxl::RefPtr<DataMember> GetVtableMember (const Collection * coll)

    Determines if the given collection type has a vtable pointer and returns it. This does not

    look in base classes because the vtable goes with the exact class it's on.

    This function can also be used to determine if the collection might possibly have a derived class

    it can be converted to. If this function returns null, PromotePtrRefToDerived is guaranteed to

    be a no-op.

    The input type must be concrete.

    Defined at line 214 of file ../../src/developer/debug/zxdb/expr/resolve_base.cc

  • LocalAgentResult ForkLocalAgent ()

    Creates a debug_agent by forking this process and running the agent code in the resulting

    process.

    Defined at line 55 of file ../../src/developer/debug/zxdb/local_agent.cc

  • bool SpecialIdentifierHasData (SpecialIdentifier i)

    Returns true if the given special identifier has data associated with it, e.g. "$plt(foo)".

    Returns false if there are no parens required. Returns true for kNone since in that case it's

    only the data.

    Defined at line 74 of file ../../src/developer/debug/zxdb/symbols/identifier_base.cc

  • Err AssertStoppedThreadWithFrameCommand (ConsoleContext * context, const Command & cmd, const char * command_name, bool validate_nounds)

    Validates a command that applies to a single stopped thread with a valid frame.

    If validate_nouns is set, only thread and process nouns may be specified (these are most common

    for commands that operate on threads) for the "Thread" variant.

    If not, generates an error of the form "<command_name> requires a stopped thread".

    Defined at line 72 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • bool PathStartsWith (const std::filesystem::path & path, const std::filesystem::path & base)

    Check if a path starts with another path. Return false if either one is relative.

    The input may not be normalized, e.g.,

    PathStartsWith("/path/to/build/dir/../../source.cc", "/path/to/build/dir") => true

    Defined at line 58 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • std::optional<VectorRegisterFormat> StringToVectorRegisterFormat (const std::string & str)

    Converts back from VectorRegisterFormatToString. A nullopt return value indicates failure.

    Defined at line 60 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

  • bool operator< (const FileLine & a, const FileLine & b)

    Comparison function for use in set and map.

    Defined at line 26 of file ../../src/developer/debug/zxdb/symbols/file_line.cc

  • void FormatTable (const std::vector<ColSpec> & spec, const std::vector<std::vector<std::string>> & rows, OutputBuffer * out)

    Formats the given rows in the output as a series of horizontally aligned (if

    possible) columns.

    If the number of items in a row is less than the number of items in the

    spec, the last element in the rows will occupy the remaining space and it

    won't affect other columns (like you used colspan in HTML). Such items will

    always be left-aligned.

    Defined at line 115 of file ../../src/developer/debug/zxdb/console/format_table.cc

  • void AnalyzeMemory (const AnalyzeMemoryOptions & opts, fit::callback<void (const Err &, OutputBuffer, uint64_t)> cb)

    Runs a stack analysis on the given thread. When the analysis is complete, the callback will be

    issued with the output and the address immediately following the last one analyzed (this is so

    the caller knows the aligned address to continue at if desired).

    On error, the Err will be set, the output buffer will be empty, and next_addr will be 0.

    Defined at line 348 of file ../../src/developer/debug/zxdb/console/analyze_memory.cc

  • ErrOrValue ResolveNonstaticMember (const fxl::RefPtr<EvalContext> & context, const ExprValue & base, const FoundMember & member)

    Synchronous versions of ResolveMember for cases where the value is known not to be an extern

    (static) member or on a derived class. This is generally used when hardcoding support for known

    structures.

    The variant that takes an initializer list will interpret the strings as identifiers, parse

    them, and resolve a nested series of members using those strings. For example, if the input

    is {"a", "b"} this will resolve "base.a.b". This is used for hardcoding some printers.

    Defined at line 238 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • void GetSubstatementCallsForLine (Process * process, const Location & loc, fit::function<void (const Err &, std::vector<SubstatementCall>)> cb)

    Extracts all calls present in the line of code on the given address. Calls both before and after

    the address will be considered, as long as it is within the contiguous range of addresses

    covering that line. Other address ranges corresponding to the same line will not be considered.

    A symbolized location should be provided. This function will be used to compute inline calls.

    This must be passed in because the location in the inline call chain could be ambiguous (see the

    Stack object for more about ambiguous inlines).

    This function needs to fetch memory so must be asynchronous. The Err in the callback will be set

    for transport errors. If there's no symbol information it will not be considered an error.

    Rather, the result vector will be empty.

    Defined at line 128 of file ../../src/developer/debug/zxdb/client/substatement.cc

  • std::filesystem::path PathRelativeTo (const std::filesystem::path & path, const std::filesystem::path & base)

    Compute the relative path from base. Both inputs must be absolute.

    Defined at line 80 of file ../../src/developer/debug/zxdb/common/file_util.cc

  • void FormatTable (const std::vector<ColSpec> & spec, const std::vector<std::vector<OutputBuffer>> & rows, OutputBuffer * out)

    Defined at line 120 of file ../../src/developer/debug/zxdb/console/format_table.cc

  • IntegerPrefix ExtractIntegerPrefix (std::string_view * s)

    Checks for a sign and base prefix for a number in the given string view. It does not check for

    overall number validity.

    The number prefix will be trimmed from the given string view so it contains only the part of the

    number after the prefix (if any). The base of the number will be returned.

    It is assumed whitespace has already been trimmed.

    If there is no prefix (including if it's not a valid number), it will report positive base 10 and

    not trim anything.

    Defined at line 209 of file ../../src/developer/debug/zxdb/expr/number_parser.cc

  • Err AssertAllStoppedThreadsCommand (ConsoleContext * context, const Command & cmd, const char * command_name, bool validate_nounds)

    Asserts that all threads of the process for the given command are stopped. This does not check if

    the frames have full stacks.

    Defined at line 102 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • ErrOrValue ResolveNonstaticMember (const fxl::RefPtr<EvalContext> & context, const ExprValue & base, const ParsedIdentifier & identifier)

    Defined at line 245 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • void EmitVariableInitializerOps (const VariableDeclTypeInfo & decl_info, uint32_t local_slot, fxl::RefPtr<ExprNode> init_expr, VmStream & stream)

    Emits bytecode to the given stream to handle the following constructs:

    int i; (C, null init_expr)

    int i = 5 * something; (C, init_expr)

    let i: i32; (Rust, explicit type with no init_expr).

    let i = 99; (Rust, init_expr with null type).

    Since this function does not take an EvalContext the input type must be concrete if it is

    supplied. It may be null to indicate "auto" (takes the type from the init expression).

    Defined at line 173 of file ../../src/developer/debug/zxdb/expr/variable_decl.cc

  • ExprValue VectorRegisterToValue (debug::RegisterID id, VectorRegisterFormat fmt, std::vector<uint8_t> data)

    Converts the given vector register data to an array of the given format.

    Defined at line 94 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

  • std::string TypeNameForVtableSymbolName (const std::string & sym_name)

    Given an unmangled symbol name for a vtable symbol, returns the type name of the symbol.

    The input will be something like "vtable for MyClass" and this will return "MyClass".

    Returns the empty string on failure.

    Defined at line 227 of file ../../src/developer/debug/zxdb/expr/resolve_base.cc

  • TemplateTypeResult ExtractTemplateType (const std::vector<ExprToken> & tokens, size_t begin_token)

    Currently it assumes all operators can be put next to each other without affecting meaning. When

    we're canonicalizing types for the purposes of string comparisons, this is almost certainly the

    case. If we start using the output from this function for more things, we'll want to handle these

    cases better.

    Defined at line 60 of file ../../src/developer/debug/zxdb/expr/template_type_extractor.cc

  • bool DwarfLangIsCFamily (DwarfLang lang)

    Returns true for any version of C, C++, and Objective C.

    Defined at line 9 of file ../../src/developer/debug/zxdb/symbols/dwarf_lang.cc

  • cmdline::Status ParseCommandLine (int argc, const char *[] argv, CommandLineOptions * options, std::vector<std::string> * params)

    Parses the given command line into options and params.

    Returns an error if the command-line is badly formed. In addition, --help

    text will be returned as an error.

    Defined at line 152 of file ../../src/developer/debug/zxdb/console/command_line_options.cc

  • OutputBuffer FormatFileName (const std::string & file_name, const TargetSymbols * optional_target_symbols)

    Formats the file or file/line.

    The TargetSymbols pointer is used to find the shortest unique way to reference the file name. If

    target_symbols is null, the full file path will always be included.

  • fxl::RefPtr<Collection> MakeCollectionType (DwarfTag type_tag, const std::string & struct_name, std::initializer_list<NameAndType> members)

    Creates a collection type with the given members.

    type_tag is one of DwarfTag::k*Type appropriate for collections (class, struct, union).

    For structs and classes, each member will be placed sequentially in the struct starting from

    offset 0, and advancing according to the size of the member. For unions, each member will be at

    offset 0.

    Defined at line 72 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • VariableLocation DecodeDwarf5LocationList (TargetPointer unit_base_addr, cpp20::span<const uint8_t> data, fit::function<std::optional<TargetPointer> (uint64_t)> & index_to_addr, const UncachedLazySymbol & source)

    Low-level decode for a DWARF 5 variable location description. The data should start at the

    beginning of the location list to parse, and cover as much data as the location list could

    possibly cover (normally the end of the .debug_loclist section).

    The index_to_addr function will convert an "addrx" index into the .debug_addr table to the

    corresponding module-relative address. It should return nullopt on failure.

    The source is the symbol that created this location entry, it will be passed to the

    VariableLocation.

    On error this will return an empty VariableLocation.

    Defined at line 249 of file ../../src/developer/debug/zxdb/symbols/dwarf_location.cc

  • fxl::RefPtr<Type> FindTypeDefinition (const FindNameContext & context, const Type * type)

    Looks for a type definition matching the name of the input type. If none exists, returns the

    input type. The only time this will return null is if the input is null. This will search for an

    exact match on the name. Most code will want to use GetConcreteType() above which strips C-V

    qualifications.

    This is used to ensure that the type is not a foward-declaration (if possible).

    Defined at line 67 of file ../../src/developer/debug/zxdb/expr/resolve_type.cc

  • bool operator== (const FileLine & a, const FileLine & b)

    These compare only the file and line number, not the compilation directory. The compilation

    directory is less consistently available (as of this writing it's not exposed by the line table),

    so using it for equality will result in incorrect behavior in some cases.

    Defined at line 31 of file ../../src/developer/debug/zxdb/symbols/file_line.cc

  • ErrOrValue ResolveNonstaticMember (const fxl::RefPtr<EvalContext> & context, const ExprValue & base, std::initializer_list<std::string> names)

    Defined at line 253 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • void EnsureResolveReference (const fxl::RefPtr<EvalContext> & eval_context, ExprValue value, EvalCallback cb)

    Ensures that the value is not a reference type (rvalue or regular). The result will be an

    ExprValue passed to the callback that has any reference types stripped.

    If the input ExprValue does not have a reference type, calls the callback immediately (from

    within the calling function's stack frame) with the input.

    If the value is a reference type, it will be resolved and the value will be the value of the

    referenced data.

    Defined at line 125 of file ../../src/developer/debug/zxdb/expr/resolve_ptr_ref.cc

  • ThreadStackUsage GetThreadStackUsage (ConsoleContext * console_context, const std::vector<debug_ipc::AddressRegion> & map, Thread * thread, uint64_t unsafe_stack_pointer)

    The unsafe stack pointer can be 0 to indicate there is no unsafe stack.

    Defined at line 373 of file ../../src/developer/debug/zxdb/console/commands/verb_stack_usage.cc

  • const char * DwarfLangToString (DwarfLang lang)

    Defined at line 24 of file ../../src/developer/debug/zxdb/symbols/dwarf_lang.cc

  • bool operator!= (const FileLine & a, const FileLine & b)

    Defined at line 36 of file ../../src/developer/debug/zxdb/symbols/file_line.cc

  • OutputBuffer FormatFileLine (const FileLine & file_line, const TargetSymbols * optional_target_symbols)

    Defined at line 128 of file ../../src/developer/debug/zxdb/console/format_location.cc

  • fxl::RefPtr<Type> DerivedTypeForVtable (const fxl::RefPtr<EvalContext> & context, TargetPointer ptr)

    Computes the derived type given a vtable pointer, if possible. Returns null on failure.

    Defined at line 233 of file ../../src/developer/debug/zxdb/expr/resolve_base.cc

  • void FormatCharArrayNode (FormatNode * node, fxl::RefPtr<Type> char_type, const uint8_t * data, size_t length, bool length_was_known, bool truncated)

    Formatters for strings. These are public so they can be shared by the pretty-printers.

    The "char pointer" variant can take a known string length or not. If one is not given, the

    function will look for a null-terminated string.

    TODO(brettw) we probably want a more general way for pretty-printers to call into our default

    code for handling certain types.

    Defined at line 737 of file ../../src/developer/debug/zxdb/expr/format.cc

  • std::optional<StringOrCharLiteralBegin> DoesBeginStringOrCharLiteral (ExprLanguage lang, std::string_view input, size_t cur)

    Returns true if the given location in the input string starts with a string or character literal.

    In Rust, this will return nullopt for lifetime annotations like 'foo, so the caller can assume

    anything starting with ' that this returns false for is a lifetime.

    Returns a StringOrCharLiteralBegin if the current location starts a string or character. This can

    be passed into ParseString if so.

    When parsing a raw string prefix, we may encounter a state where we know it should be a string

    prefix but it's malformed. Currently we don't report the error and we say it's not a string.

    The return value could be converted to a tri-state (not a string, string, error) if needed.

    Defined at line 255 of file ../../src/developer/debug/zxdb/expr/parse_string.cc

  • const std::map<Noun, NounRecord> & GetNouns ()

    Returns all known nouns. The contents of this map will never change once it is called.

    Defined at line 864 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • fxl::RefPtr<Type> FindTypeDefinition (const FindNameContext & context, ParsedIdentifier looking_for)

    Looks for a type definition matching the given fully-qualified name. Returns null if not found.

    Defined at line 80 of file ../../src/developer/debug/zxdb/expr/resolve_type.cc

  • std::vector<SubstatementCall> GetSubstatementCallsForMemory (const ArchInfo * arch_info, const ProcessSymbols * symbols, const Location & loc, const AddressRanges & ranges, const MemoryDump & mem)

    Extracts all physical function calls (not inlines) for the given memory region in the given

    ranges list. This assumes the memory region starts at an instruction boundary. The ranges list

    can contain many entries and can be discontiguous as long as the memory dump covers them.

    Defined at line 218 of file ../../src/developer/debug/zxdb/client/substatement.cc

  • size_t CheckHexPrefix (const std::string & s)

    Checks if the given string starts with a hexadecimal prefix ("0x" or "0X"). If it does, returns

    the first index into the array of the string FOLLOWING the prefix. If there is no prefix, returns

    0. If there is only the prefix and nothing following the returned value will be s.size().

    Defined at line 121 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • const char * CastTypeToString (CastType )

    Defined at line 588 of file ../../src/developer/debug/zxdb/expr/cast.cc

  • void FormatCharPointerNode (FormatNode * node, uint64_t ptr, const Type * char_type, std::optional<uint32_t> length, const FormatOptions & options, const fxl::RefPtr<EvalContext> & eval_context, fit::deferred_callback cb)

    Defined at line 776 of file ../../src/developer/debug/zxdb/expr/format.cc

  • fxl::RefPtr<Collection> MakeCollectionTypeWithOffset (DwarfTag type_tag, const std::string & type_name, uint32_t first_member_offset, std::initializer_list<NameAndType> members)

    Like MakeCollectionType but takes an offset for the first data member to start at. Subsequent

    data members start from there (for unions they will all start from there).

    Defined at line 77 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • Err StringToInt (const std::string & s, int * out)

    Defined at line 127 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • std::string NounToString (Noun n)

    Converts the given noun to the canonical name.

    Defined at line 876 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • void AppendLineMatchesForInlineCalls (const CodeBlock * block, const std::string & full_path, int line, const Function * block_fn, std::vector<LineMatch> * accumulator)

    Recursively searches the given code block (normally a function for the first call) for inlined

    function calls whose call location could match the given file/line. The results will be appended

    to the given accumulator.

    This is used to workaround the Clang bug

    https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=112203

    where it does not emit line table entries for the call location of an inline call. See where this

    function is called from in ModuleSymbolsImpl for more.

    The function_die_offset is the function corresponding to the input block. When the input block is

    a function (as the initial call will be), this should be set to code_block->GetDieOffset(). But

    for recursive calls, some blocks will be lexical scopes and we want to maintain the DIE offset

    of the parent *function* containing it.

    Defined at line 93 of file ../../src/developer/debug/zxdb/symbols/find_line.cc

  • OutputBuffer FormatFile (const std::string & file_name, const TargetSymbols * optional_target_symbols)

    Defined at line 113 of file ../../src/developer/debug/zxdb/console/format_location.cc

  • Err PopulateVariableValues (Frame * frame, const dap::VariablesRequest & req, DebugAdapterContext * ctx, std::function<void (dap::ResponseOrError<dap::VariablesResponse>)> callback, std::map<std::string, fxl::RefPtr<Variable>> & vars)

    Evaluate variable value and fill its descriptions.

    Defined at line 130 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_variables.cc

  • Err StringToUint32 (const std::string & s, uint32_t * out)

    Defined at line 172 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • const char * VmOpTypeToString (VmOpType op)

    Converts the operation to a string/stream.

    Defined at line 11 of file ../../src/developer/debug/zxdb/expr/vm_op_type.cc

  • int ConsoleMain (int argc, const char *[] argv)

    Defined at line 119 of file ../../src/developer/debug/zxdb/main.cc

  • Err StringToInt64 (const std::string & s, int64_t * out)

    Defined at line 142 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void ResolveMemberByPointer (const fxl::RefPtr<EvalContext> & context, const ExprValue & base_ptr, const FoundMember & found_member, EvalCallback cb)

    The variant takes an ExprValue which is a pointer to the base/struct or class. Because it fetches

    memory it is always asynchronous.

    Since it's given a FoundMember, this can not check for members of derived classes. Use the

    version that takes an Identifier if you want this capability.

    Defined at line 270 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • Err StringToUint64 (const std::string & s, uint64_t * out)

    Defined at line 186 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • fxl::RefPtr<AsyncOutputBuffer> FormatStack (Thread * thread, const FormatStackOptions & opts)

    Generates the list of frames from the given Thread to the console. This will complete

    asynchronously. The current frame will automatically be queried and will be indicated.

    This will request the full frame list from the agent if it has not been synced locally.

    Defined at line 153 of file ../../src/developer/debug/zxdb/console/format_frame.cc

  • const NounRecord * NounToRecord (Noun n)

    Converts the given noun its record, if any.

    Defined at line 884 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • std::ostream & operator<< (std::ostream & , VmOpType op)

    Defined at line 44 of file ../../src/developer/debug/zxdb/expr/vm_op_type.cc

  • void DescribeFormatNodeForConsole (FormatNode * node, const ConsoleFormatOptions & options, fxl::RefPtr<EvalContext> context, fit::deferred_callback cb)

    Recursively describes the given format node according to the given settings. Executes the given

    callback on completion or if the node is destroyed before formatting is done.

    Defined at line 614 of file ../../src/developer/debug/zxdb/console/format_node_console.cc

  • ErrOr<std::string> ParseStringOrCharLiteral (std::string_view input, const StringOrCharLiteralBegin & info, size_t * cur, size_t * error_location)

    Parses a string or character literal starting at index |*cur| inside |input|. On error, the

    |*error_location| will be set to the byte that goes along with the error. The info should have

    been computed by DoesBeginStringLiteral().

    Defined at line 294 of file ../../src/developer/debug/zxdb/expr/parse_string.cc

  • void CastExprValue (const fxl::RefPtr<EvalContext> & eval_context, CastType cast_type, const ExprValue & source, const fxl::RefPtr<Type> & dest_type, const ExprValueSource & dest_source, EvalCallback cb)

    Casts to a given type using a specific set of casting rules.

    The dest_source is an optional specification of what "source location" the returned value should

    have. For the default behavior, use an empty ExprValueSource().

    Defined at line 604 of file ../../src/developer/debug/zxdb/expr/cast.cc

  • OutputBuffer FormatFunctionName (const Function * function, const FormatFunctionNameOptions & options)

    Formats the function name with syntax highlighting.

    It will apply some simple rewrite rules to clean up some symbols.

    If optional_target_symbols is provided it can provide extra cleanup for some generated lambda

    names by using the shortest possible unique file name.

    Defined at line 151 of file ../../src/developer/debug/zxdb/console/format_name.cc

  • Err GetPointedToType (const fxl::RefPtr<EvalContext> & eval_context, const Type * input, fxl::RefPtr<Type> * pointed_to, PointedToOptions option)

    Verifies that |input| type is a pointer and fills the pointed-to type into |*pointed_to|. In

    other cases, returns an error. The input type can be null (which will produce an error) or

    non-concrete (const, forward definition, etc.) so the caller doesn't have to check.

    The returned type may not necessarily be concrete (need to preserve, const, etc.).

    The |options| parameter controls whether or not it is allowed to return a void type in

    |pointed_to|. If kIncludeVoid is passed here, a void* as |input| will not return an error, and

    |pointed_to| will be null, which must be checked before further usage.

    Defined at line 144 of file ../../src/developer/debug/zxdb/expr/resolve_ptr_ref.cc

  • fxl::RefPtr<Collection> MakeDerivedClassPair (DwarfTag type_tag, const std::string & base_name, std::initializer_list<NameAndType> base_members, const std::string & derived_name, std::initializer_list<NameAndType> derived_members)

    Makes a two collections, one a base class of the other, and returns the derived type.

    type_tag is one of DwarfTag::k*Type appropriate for collections (class, struct, union).

    Defined at line 110 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • const std::map<std::string, Noun> & GetStringNounMap ()

    Returns the mapping from possible inputs to the noun. This is an inverted version of the map

    returned by GetNouns().

    Defined at line 892 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • void FormatArrayNode (FormatNode * node, const ExprValue & value, int elt_count, const Type * erased_type, const FormatOptions & options, const fxl::RefPtr<EvalContext> & eval_context, fit::deferred_callback cb)

    Formats an array with a known length. This is for non-char arrays (which are special-cased in

    FormatCharArrayNode).

    The value is given rather than being extracted from the node so it can be different. It can be

    either an Array symbol type or a pointer.

    Defined at line 843 of file ../../src/developer/debug/zxdb/expr/format.cc

  • VisitResult VisitDataMembers (const Collection * collection, const VisitDataMembersCallback & cb, int max_items)

    Defined at line 127 of file ../../src/developer/debug/zxdb/symbols/visit_scopes.cc

  • Err ReadUint64Arg (const Command & cmd, size_t arg_index, const char * param_desc, uint64_t * out)

    Reads an int64 from the given index of the command args. Returns an error if there are not enough

    args, or if the value isn't an int64.

    The param_desc will be used in the error string, for example "process koid".

    Defined at line 216 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • fxl::RefPtr<AsyncOutputBuffer> FormatFrame (const Frame * frame, const FormatFrameOptions & opts, int id)

    Formats one frame using the long format. Since the long format includes function parameters which

    are computed asynchronously, this returns an AsyncOutputBuffer.

    This does not append a newline at the end of the output.

    Defined at line 171 of file ../../src/developer/debug/zxdb/console/format_frame.cc

  • OutputBuffer FormatNodeForConsole (const FormatNode & node, const ConsoleFormatOptions & options)

    Formats the given FormatNode for the console. The string will not be followed by a newline.

    This assumes the node has been evaluated and described as desired by the caller so the result

    can be synchronously formatted and returned.

    Defined at line 619 of file ../../src/developer/debug/zxdb/console/format_node_console.cc

  • void ExecuteNoun (const Command & cmd, fxl::RefPtr<CommandContext> cmd_context)

    Handles execution of command input consisting of a noun and no verb. For example "process",

    "process 2 thread", "thread 5".

    Defined at line 904 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • void ResolveMemberByPointer (const fxl::RefPtr<EvalContext> & context, const ExprValue & base_ptr, const ParsedIdentifier & identifier, fit::callback<void (ErrOrValue, const FoundMember &)> cb)

    Same as previous version but takes the name of the member to find. The callback also provides the

    FoundMember corresponding to what the name matched.

    This also supports (when requested by the EvalContext) automatically converting base class

    pointers to derived class pointers when the derived class is known. It allows "foo->bar" where

    "bar" is a data member on the current derived class's instance of foo.

    Defined at line 280 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • std::string MinidumpGetBuildId (const crashpad::ModuleSnapshot & mod)

    Helper to get BuildID from a minidump module.

    Defined at line 192 of file ../../src/developer/debug/zxdb/client/minidump_memory.cc

  • fxl::RefPtr<CompileUnit> MakeRustUnit ()

    Setting this compile unit as the parent of a symbol will mark it as having the Rust language.

    Defined at line 124 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • std::string ThreadStateToString (std::optional<debug_ipc::ThreadRecord::State> state, debug_ipc::ThreadRecord::BlockedReason blocked_reason)

    Defined at line 229 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • fxl::RefPtr<AsyncOutputBuffer> FormatAllThreadStacks (const std::vector<Thread *> & threads, const FormatStackOptions & opts, fxl::RefPtr<CommandContext> & cmd_context)

    Defined at line 221 of file ../../src/developer/debug/zxdb/console/format_frame.cc

  • ErrOrValue CastNumericExprValue (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & source, const fxl::RefPtr<Type> & dest_type, const ExprValueSource & dest_source)

    A numeric cast handles implicit casts of numeric types. This subset of casting can be synchronous

    because it does not need to follow references or virtual inheritance.

    Returns an error if the input is non-numeric.

    Defined at line 625 of file ../../src/developer/debug/zxdb/expr/cast.cc

  • ErrOr<IntegerSuffix> ExtractIntegerSuffix (std::string_view * s)

    Checks for a type suffix on a number in the given string view and returns the suffix structure.

    It does not check for overall number validity.

    On success, the number suffix ("u", "l", "ll") will be trimmed from the given string view so it

    contains only the part of the number before the suffix (if any).

    It is assumed whitespace has already been trimmed.

    If there is no suffix, it will return a signed integer and not trim anything. If the suffix is

    invalid, return the error.

    Defined at line 251 of file ../../src/developer/debug/zxdb/expr/number_parser.cc

  • Err ParseLocalInputLocation (const ProcessSymbols * optional_process_symbols, const Location & location, const std::string & input, std::vector<InputLocation> * output)

    The same as ParseGlobalInputLocation() but this will additionally find unqualified functions on

    the current class if there is one. For file/line and address based inputs, this will be identical

    to ParseGlobalInputLocation().

    The Frame* variant will extract the process symbols and current location from the frame if

    possible.

    In the symbolic name case, it can produce more than one location by qualifying the matched class

    member function name so it can be resolved in a global context. It will ALSO return an

    InputLocation that corresponds to the global symbol name.

    For example, if the input is "Func" this might return two things:

    - "::some_namespace::MyClass::Func" (match from current frame).

    - "Func" (so all global functions will still be matched when the symbols are queried).

    If there's no "local" match or the optional_frame is null, this will return only the second

    unmodified "Func" version.

    This is designed to return the maximal number of matches given the current context that can

    be resolved later without ambiguity (breakpoints will need to match shared libraries loaded

    later when the current context won't be known).

    The ProcessSymbols pointer can be null in which case this will have the same behavior as

    ParseGlobalInputLocation() (this simplifies some callers which need to handle both cases).

    Defined at line 174 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • std::string ErrTypeToString (ErrType type)

    Defined at line 75 of file ../../src/developer/debug/zxdb/common/err.cc

  • void AppendNouns (std::map<Noun, NounRecord> * nouns)

    Populates the nouns map.

    Defined at line 931 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • void FormatPointerNode (FormatNode * node, const ExprValue & value, const FormatOptions & options)

    Formats a node for a pointer. This function is synchronous.

    The value is given rather than taken from the node to support pretty-printing uses.

    Defined at line 891 of file ../../src/developer/debug/zxdb/expr/format.cc

  • std::string ExecutionScopeToString (const ConsoleContext * context, const ExecutionScope & scope)

    Defined at line 244 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • unwinder::Error ErrToUnwinderError (const Err & err)

    Defined at line 106 of file ../../src/developer/debug/zxdb/common/err.cc

  • const char * TextBackgroundColorToString (TextBackgroundColor )

    Defined at line 164 of file ../../src/developer/debug/zxdb/console/output_buffer.cc

  • std::vector<LineMatch> GetBestLineMatches (const std::vector<LineMatch> & matches)

    Filters the set of matches to get all instances of the closest match for the line. Typically this

    will result in a maximum of one match per function. It's assumed that the LineMatches are all for

    the same file.

    LineMatches are only generated for lines that cross the line in question, so the closest

    LineMatch for this function is the one with the smallest line number.

    The "one per function" rule is because a line can often get broken into multiple line table

    entries (sometimes disjoint, sometimes not), and when asking for a line we want the one with the

    lowest address. This rule is occasionally violated for cases like lines that contain code

    generated around rust await points, and generate line tables that would put a breakpoint on an

    invalid instruction (https://github.com/rust-lang/rust/issues/123341). See the comment above

    |ResolveInputLineForFile| for details.

    Defined at line 135 of file ../../src/developer/debug/zxdb/symbols/find_line.cc

  • fxl::RefPtr<AsyncOutputBuffer> FormatValueForConsole (ExprValue value, const ConsoleFormatOptions & options, fxl::RefPtr<EvalContext> context, const std::string & value_name)

    Describes and formats the given ExprValue and returns it as an async output buffer. The result

    will not be followed by a newline.

    If the value_name is given, it will be printed with that name, otherwise it will have no name.

    Defined at line 623 of file ../../src/developer/debug/zxdb/console/format_node_console.cc

  • ErrOr<bool> CastNumericExprValueToBool (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & source)

    Convience function around CastNumericExprValue() to do an implicit cast to a boolean value. Like

    CastNumericExprValue(), this does not follow references.

    Returns an error if the input is non-numeric.

    Defined at line 640 of file ../../src/developer/debug/zxdb/expr/cast.cc

  • fxl::RefPtr<Variant> MakeRustVariant (const std::string & name, std::optional<uint64_t> discriminant, const std::vector<fxl::RefPtr<DataMember>> & members)

    Makes a Rust variant that can be put into a VariantPart. Rust Variants have a single data member

    that is a struct containing the members passed in which could be empty). So it's got 2 structs.

    The variant's single generated data member will be at offset 0 in the containing struct.

    Normally the discriminant in the VariantPart and the data members of each Variant start at

    offset 0 so they overlap! The passed-in members then go inside this struct, and should be

    arranged so they don't overlap the data taken by the discriminant.

    Defined at line 131 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • Identifier ToIdentifier (const ParsedIdentifier & parsed)

    Converts a ParsedIdentifier to an Identifier and vice-versa. Conversion to a ParsedIdentifier may

    fail in which case the raw text of each component will be placed into the "name" part.

    Defined at line 52 of file ../../src/developer/debug/zxdb/expr/parsed_identifier.cc

  • ParsedIdentifier ToParsedIdentifier (const Identifier & ident)

    We want to keep the same component structure regardless of what arbitrary strings were contained

    in the original. So go one component at a time.

    Defined at line 71 of file ../../src/developer/debug/zxdb/expr/parsed_identifier.cc

  • fxl::RefPtr<BaseType> GetBuiltinUnsigned64Type (ExprLanguage lang)

    Defined at line 160 of file ../../src/developer/debug/zxdb/expr/builtin_types.cc

  • Err PopulateChildren (Frame * frame, const dap::VariablesRequest & req, DebugAdapterContext * ctx, std::function<void (dap::ResponseOrError<dap::VariablesResponse>)> callback)

    Defined at line 181 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_variables.cc

  • Err ParseLocalInputLocation (const Frame * optional_frame, const std::string & input, std::vector<InputLocation> * output)

    Defined at line 191 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • ExecutionScope ExecutionScopeForCommand (const Command & cmd)

    Converts the command context to an execution scope. This will take the "target"/"thread" if

    explicitly given. If no globa/target/thread context is explicitly given, defaults to the global.

    Defined at line 263 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void ResolveInherited (const fxl::RefPtr<EvalContext> & context, const ExprValue & value, const InheritancePath & path, fit::callback<void (ErrOrValue)> cb)

    Takes a collection and an InheritancePath indicating how to get from the value to the desired

    base class, and extracts the base class. The |path| should have its derived class be of the type

    from |value|, and its base class is the one the caller wants to extract. The path should

    represent all intermediate classes.

    Defined at line 300 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • void FormatWrapper (FormatNode * node, const std::string & description, const std::string & prefix, const std::string & suffix, const std::string & contained_name, ErrOrValue contained_value)

    Fills a format node for something that holds another value. This would be used for things like

    atomics, optionals, and iterators where there's some indirection.

    The node will be given the description, and it will have one child with the given name and value.

    For convenience, this allows an value, an error, or a lambda for computing the value.

    Defined at line 923 of file ../../src/developer/debug/zxdb/expr/format.cc

  • fxl::RefPtr<AsyncOutputBuffer> FormatVariableForConsole (const Variable * var, const ConsoleFormatOptions & options, fxl::RefPtr<EvalContext> context)

    Like FormatValueForConsole but evaluates the given variable in the given context to get the

    result. The name of the variable will be included.

    Defined at line 642 of file ../../src/developer/debug/zxdb/console/format_node_console.cc

  • void FormatWrapper (FormatNode * node, const std::string & description, const std::string & prefix, const std::string & suffix, const std::string & contained_name, FormatNode::GetProgramaticValue value_getter)

    Defined at line 936 of file ../../src/developer/debug/zxdb/expr/format.cc

  • const std::vector<SwitchRecord> & GetNounSwitches ()

    Returns the set of all switches valid for nouns. Since a command can have multiple nouns, which

    set of switches apply can be complicated.

    Currently, when a command lacks a verb, the logic in ExecuteNoun() will prioritize which one the

    user meant and therefore, which one the switches will apply to.

    If the noun switches start getting more complicated, we will probably want to have a priority

    associated with a noun so the parser can figure out which noun is being executed and apply

    switches on a per-noun basis.

    Defined at line 954 of file ../../src/developer/debug/zxdb/console/nouns.cc

  • Err ResolveBreakpointsForModification (const Command & cmd, const char * command_name, std::vector<Breakpoint *> * output)

    Find breakpoints to modify. |cmd| is enable/disable/clear with an optional location.

    If a location is given, returns all breakpoints at that location.

    If no location is provided, returns current active breakpoint, which could be affected

    by prefixing "bp <index>" before the command.

    Defined at line 272 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void EvalLocalInputLocation (const fxl::RefPtr<EvalContext> & eval_context, const Frame * optional_frame, const std::string & input, fit::callback<void (ErrOr<std::vector<InputLocation>>, std::optional<uint32_t>)> cb)

    Like ParseLocalInputLocation() but also accepts expressions preceeded with a "*". Because

    evaluating expressions may be asynchronous, this function is too.

    If the input location is an expression and the thing it points to has an intrinsic size, that

    size will be passed as the second parameter of the callback.

    The callback follows "expression" rules in that it will be evaluted from within the stack of this

    function if the result is synchronously available.

    Defined at line 202 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • size_t GetFunctionPrologueSize (const LineTable & line_table, const Function * function)

    Computes the size in bytes of the given function's prologue. The line table corresponding to

    that address should be passed.

    A function prologue is the boilerplate at the beginning that sets up the stack frame. Generally

    one will want to skip over this automatically because the local variables and function parameters

    won't be readable from inside the prologue. On ARM since a call sets the link register rather

    than modifying the stack, the stack pointer won't always be consistent either.

    The size is measured from the function's code_ranges().begin(). If a prologue is not found, this

    returns 0.

    Defined at line 194 of file ../../src/developer/debug/zxdb/symbols/find_line.cc

  • void AppendCEscapedChar (uint8_t ch, std::string * dest)

    Appends the given byte to the destination, escaping as necessary per C rules.

    Defined at line 948 of file ../../src/developer/debug/zxdb/expr/format.cc

  • void ResolveInheritedPtr (const fxl::RefPtr<EvalContext> & context, TargetPointer derived, const InheritancePath & path, fit::function<void (ErrOr<TargetPointer>)> cb)

    Converts a pointer to a derived class to a pointer to the base class identified by the given

    path. This is the same as ResolveInherited() above but operates on pointers to objects rather

    than objects themselves.

    For common cases this is just a constant offset, but if the inheritance path has virtual

    inheritance, this function will compute the result according to the expressions (may require

    fetching memory)

    Defined at line 341 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • fxl::RefPtr<AsyncOutputBuffer> FormatExpressionsForConsole (const std::vector<std::string> & expressions, const ConsoleFormatOptions & options, fxl::RefPtr<EvalContext> context)

    Outputs all of the given expressions. The expressions themselves will be displayed as the

    "variable name" of each resulting value.

    Defined at line 661 of file ../../src/developer/debug/zxdb/console/format_node_console.cc

  • OutputBuffer FormatBreakpoint (const ConsoleContext * context, const Breakpoint * breakpoint, bool show_context)

    The |show_context| flag will cause some source code to be included annotated with the breakpoint,

    or a message about pending breakpoints if there is no location.

    Defined at line 338 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void EvalLocalInputLocation (const fxl::RefPtr<EvalContext> & eval_context, const Location & location, const std::string & input, fit::callback<void (ErrOr<std::vector<InputLocation>>, std::optional<uint32_t>)> cb)

    Defined at line 212 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err PopulateLocalVariables (Frame * frame, const dap::VariablesRequest & req, DebugAdapterContext * ctx, std::function<void (dap::ResponseOrError<dap::VariablesResponse>)> callback)

    Defined at line 220 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_variables.cc

  • Err PopulateFunctionArguments (Frame * frame, const dap::VariablesRequest & req, DebugAdapterContext * ctx, std::function<void (dap::ResponseOrError<dap::VariablesResponse>)> callback)

    Defined at line 276 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_variables.cc

  • Err PopulateRegisters (Frame * frame, const dap::VariablesRequest & req, DebugAdapterContext * ctx, std::function<void (dap::ResponseOrError<dap::VariablesResponse>)> callback)

    Defined at line 301 of file ../../src/developer/debug/zxdb/debug_adapter/handlers/request_variables.cc

  • OutputBuffer FormatInputLocation (const InputLocation & location)

    Defined at line 438 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • size_t GetFloatTokenLength (ExprLanguage lang, std::string_view input, FloatFollowing * following)

    Checks if the current input begins with a floating-point literal and returns its length if it

    does. Returns 0 if it does not begin a floating point literal. Whether a floating point number

    can follow the given token is placed into |*following| (see enum definition).

    Whitespace is not stripped so leading whitespace will not be considered a floating point token.

    As in C, a leading '-' is not considered part of the token. "-23.5" is a unary '-' operator

    applied to a positive floating-point literal.

    On success, the identified token may not represent a valid floating-point number. It may have

    extra garbage in it, or may be malformed in various ways. It is just the range of text to be

    considered a float. See ValueForFloatToken for conversion + validation.

    Defined at line 322 of file ../../src/developer/debug/zxdb/expr/number_parser.cc

  • OutputBuffer FormatInputLocations (const std::vector<InputLocation> & location)

    Defined at line 463 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • fxl::RefPtr<Collection> MakeRustEnum (const std::string & name, std::initializer_list<std::pair<std::string, std::vector<fxl::RefPtr<Type>>>> values)

    High-level creation of a Rust enum. This will generate a 64-bit disciminant and start numbering

    the enum values at 0. The "values" of the enum will all be tuple types.

    The "type" for a Rust enum value is always a struct. If there is no data (say for

    "Option::None"), the type should be an empty collection. For tuple values, name the struct

    members starting with "__0". So this is how "Option<i32>" might be created:

    MakeRustEnum("Option", {

    {"None", {}},

    {"Some", {MakeInt32Type()}}

    });

    Defined at line 172 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • fxl::RefPtr<EvalContext> GetEvalContextForCommand (const Command & cmd)

    Returns the best EvalContext for the given command. If there is an available frame, uses that to

    registers and local variables can be read. Otherwise falls back to process (read/write memory and

    globals only) or generic (calculator-like mode only) contexts.

    Defined at line 480 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • const char * TextForegroundColorToString (TextForegroundColor )

    Defined at line 204 of file ../../src/developer/debug/zxdb/console/output_buffer.cc

  • FloatSuffix StripFloatSuffix (std::string_view * view)

    Identifies and strips the suffix from the end of a float token. The suffix is assumed to be the

    last character of the input.

    Defined at line 382 of file ../../src/developer/debug/zxdb/expr/number_parser.cc

  • Err FormatSourceFileContext (const FileLine & file_line, const SourceFileProvider & file_provider, const FormatSourceOpts & opts, OutputBuffer * out)

    Formats the contents of the given local file name to the output. See FormatSourceFileContext for

    error handling.

    The build_dir indicates the directory where relative file names will be treated as relative to.

    Defined at line 352 of file ../../src/developer/debug/zxdb/console/format_context.cc

  • ErrOrValue ValueForFloatToken (ExprLanguage lang, const ExprToken & token)

    Given a floating-point token, returns the ExprValue for it if possible.

    Defined at line 401 of file ../../src/developer/debug/zxdb/expr/number_parser.cc

  • fxl::RefPtr<Collection> MakeRustEnum (const std::string & name, fxl::RefPtr<DataMember> discriminant, const std::vector<fxl::RefPtr<Variant>> & variants)

    Low-level creation of a Rust enum.

    A rust enum is a collection containing a variant part. The variant part includes a discriminant

    and the variants that it selects from. The caller should ensure the data members in the variants

    and the discriminant don't overlap.

    The result will be sized to the largest variant.

    Defined at line 205 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • ErrOrValue ResolveInherited (const fxl::RefPtr<EvalContext> & context, const ExprValue & value, const InheritedFrom * from)

    Takes a Collection value and a base class inside of it, computes the value of the base class.

    This does not support virtual inheritance.

    TODO(brettw) these should be removed in preference to the asynchronous version above.

    For the version that takes an InheritedFrom, the base class must be a direct base class of the

    "value" collection, not an indirect base.

    The asynchronous version supports virtual inheritance, while the other variants do not. The

    from_symbol_context should be the symbol context associated with the module from which the

    InheritedFrom object came. It will be used to evaluate the location expression.

    For the version that takes a type and an offset, the type must already have been computed as some

    type of base class that lives at the given offset. It need not be a direct base and no type

    checking is done as long as the offsets and sizes are valid.

    Defined at line 401 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • ErrOrValue ResolveInherited (const fxl::RefPtr<EvalContext> & context, const ExprValue & value, fxl::RefPtr<Type> base_type, uint64_t offset)

    Defined at line 410 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • std::string ServerStateToString (const SymbolServer::State & state)

    Defined at line 184 of file ../../src/developer/debug/zxdb/client/symbol_server.cc

  • Err ResolveInputLocations (const ProcessSymbols * process_symbols, const Location & location, const std::string & input, bool symbolize, std::vector<Location> * output)

    Parses the input and generates a list of matches. No matches will generate an error. This can

    take either a pre-parsed InputLocation, or can parse the input itself.

    The Frame* variant will extract the process symbols and current location from the frame if

    possible.

    Set |symbolize| to make the output locations symbolized. This will be slightly slower. If you

    just need the addresses, pass false.

    The |optional_frame| will be passed for context to ParseLocalInputLocation() above to handle

    finding names based on the current scope. See that for the behavior of local functions

    definitions.

    Underneath final resolution is done by ResolvePermissiveInputLocations() so will match functions

    in any namespace unless globally qualified.

    Defined at line 239 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err ResolveInputLocations (const Frame * optional_frame, const std::string & input, bool symbolize, std::vector<Location> * output)

    Defined at line 249 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err FormatSourceContext (const std::string & file_name_for_display, const std::string & file_contents, const FormatSourceOpts & opts, OutputBuffer * out)

    Formats the given source to the output.

    The file_name_for_display is used for display purposes but is not interpreted in any way. This

    will be printed if the show_file_name flag is set in the options.

    If the active line is nonzero but is not in the file, an error will be returned and no output

    will be generated. The file_name_for_display will be used to generate this string.

    Defined at line 375 of file ../../src/developer/debug/zxdb/console/format_context.cc

  • Err EvalCommandExpression (const Command & cmd, const char * verb, const fxl::RefPtr<EvalContext> & eval_context, bool follow_references, bool verbose_errors, EvalCallback cb)

    Evaluates all args in the given command as an expression and calls the callback with the result.

    The callback will be called from within the stack of the caller if the expression can be

    evaluated synchronously.

    When there is an error during setup, the error will be returned and the callback will not be

    called. After setup, all evaluation errors will come via the callback.

    The verbose_errors flag, if set, will wrap any expression evaluation errors with some

    explanation that the expression has failed to evaluate. Most callers except "print" will want

    verbose errors because short things like "Optimized out" make sense in the context of printing

    a value, but not for e.g. the result of "watch foo".

    The |verb| string is used to format error messages showing command examples.

    Defined at line 499 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • Err ResolveInputLocations (const ProcessSymbols * process_symbols, const std::vector<InputLocation> & input_locations, bool symbolize, std::vector<Location> * locations)

    Variant of the above that takes a pre-parsed list of input locations.

    Defined at line 260 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err GetConcretePointedToCollection (const fxl::RefPtr<EvalContext> & eval_context, const Type * input, fxl::RefPtr<Collection> * pointed_to)

    Verifies that |input| type is a pointer to a collection and fills the pointed-to type into

    |*pointed_to|. In other cases, returns an error. The input type can be null (which will produce

    an error) or non-concrete (const, forward definition, etc.) so the caller doesn't have to check.

    The returned type will be concrete which means the type may be modified to strip CV qualifiers.

    This is used when looking up collection members by pointer so this is needed. It should not be

    used to generate types that might be visible to the user (they'll want the qualifiers).

    Defined at line 415 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • std::ostream & operator<< (std::ostream & out, const DwarfStackEntry & entry)

    For test output.

    Defined at line 174 of file ../../src/developer/debug/zxdb/symbols/dwarf_stack_entry.cc

  • fxl::RefPtr<Collection> MakeTestRustEnum ()

    Makes a standard rust enum representing the definition:

    enum RustEnum {

    None, // Default

    Scalar(u32), // Discriminant = 0

    Point{x:u32, y:u32}, // Discriminant = 1

    }

    The layout is 12 bytes, the 4 byte discriminant, then the 0-to-8 bytes of values depending on the

    discriminant value (should be padded to 12 total);

    Rust doesn't use the "default discriminant" feature of DWARF but we use that here to test our

    interpretation of DWARF. The default discriminant matches any discriminant value that's not

    otherwise explicitly encoded.

    Defined at line 236 of file ../../src/developer/debug/zxdb/symbols/type_test_support.cc

  • AddressRange GetAddressRangeForLineSubstatements (Process * process, const Location & loc)
  • Err EvalCommandAddressExpression (const Command & cmd, const char * verb, const fxl::RefPtr<EvalContext> & eval_context, fit::callback<void (const Err &, uint64_t, std::optional<uint32_t>)> cb)

    Like EvalCommandExpression but attempts to convert the result to an address. This is used for

    commands that want to support expressions to compute addresses.

    Some expressions may evaluate to a pointer where the intrinsic size of the pointed-to thing is

    known. In this case, the size will be passed to the callback. Untyped results will have a null

    size.

    If the command doesn't evaluate to an address, the Err will be set.

    Defined at line 520 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • ErrOr<size_t> GetRustTupleMemberCount (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & tuple)

    Returns the number of members in a Rust tuple.

    Returns an error if the value isn't a Rust tuple. Empty structs are considered empty tuples,

    regardless of whether the Collection thinks it's a tuple or not. Empty tuple structs and

    empty enum values look just like regular empty structs.

    Defined at line 429 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • Err ResolveUniqueInputLocation (const ProcessSymbols * process_symbols, const InputLocation & input_location, bool symbolize, Location * output)

    Resolves the given input string to a Location object. Returns an error parsing or if the location

    can not be resolved or resolves to more than one address.

    Set |symbolize| to make the output |*location| symbolized. This will be slightly slower. If you

    just need the address, pass false.

    These first two variants take pre-parsed InputLocation(s):

    Defined at line 279 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • const ExprTokenRecord & RecordForTokenType (ExprTokenType )

    Defined at line 139 of file ../../src/developer/debug/zxdb/expr/expr_token_type.cc

  • Err ResolveUniqueInputLocation (const ProcessSymbols * process_symbols, const std::vector<InputLocation> & input_location, bool symbolize, Location * output)

    This implementation isn't great, it doesn't always show the best disambiguations for the given

    input.

    Also it misses a file name edge case: If there is one file whose full path in the symbols is a

    right-side subset of another (say "foo/bar.cc" and "something/foo/bar.cc"), then "foo/bar.cc" is

    the most unique name of the first file. But if the user types that, they'll get both matches and

    this function will report an ambiguous location.

    Instead, if the input is a file name and there is only one result where the file name matches

    exactly, we should pick it.

    Defined at line 296 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err RewriteCommandExpressionError (const std::string & verb, const Err & err)

    Errors from the evaluation of expressions of commands oftem don't make sense without context.

    Defined at line 540 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • ErrOrValue ExtractRustTuple (const fxl::RefPtr<EvalContext> & eval_context, const ExprValue & tuple, size_t index)

    Given a Rust tuple or tuple struct stored in an ExprValue, extracts the value at the given index.

    Returns an error if the input isn't a Rust tuple or the index is out of range.

    Defined at line 453 of file ../../src/developer/debug/zxdb/expr/resolve_collection.cc

  • std::ostream & operator<< (std::ostream & out, const Disassembler::Row & row)

    For unit testing.

    Defined at line 95 of file ../../src/developer/debug/zxdb/client/disassembler.cc

  • Err ResolveUniqueInputLocation (const ProcessSymbols * process_symbols, const Location & location, const std::string & input, bool symbolize, Location * output)

    These variants parse the input. The Frame* variant will extract the process symbols and current

    location from the frame if possible.

    Defined at line 344 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err ResolveUniqueInputLocation (const Frame * optional_frame, const std::string & input, bool symbolize, Location * output)

    Defined at line 354 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • Err FormatAsmContext (const ArchInfo & arch_info, const MemoryDump & dump, const FormatAsmOpts & opts, Process * process, const SourceFileProvider & file_provider, OutputBuffer * out)

    Outputs assembly.

    The process is used when options.include_source is set to map addresses back to source locations.

    When options.include_source is not set, this can be null.

    On error, returns the error and does nothing.

    Defined at line 464 of file ../../src/developer/debug/zxdb/console/format_context.cc

  • std::string FormatConsoleString (const std::string & input)

    Formats an argument or setting value.

    Normally strings for switches and settings need no quoting since they're whitespace-separated,

    and the input will be returned unchanged.

    But if there are spaces or unprintable characters, this will quote or escape in such a way that

    the console/setting formatter will interpret the string the same way as a single entity.

    Defined at line 557 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void CompleteInputLocation (const Command & command, const std::string & prefix, std::vector<std::string> * completions)

    Autocomplete for input locations.

    Defined at line 366 of file ../../src/developer/debug/zxdb/console/input_location_parser.cc

  • ConsoleFormatOptions::NumFormat GetNumberFormatForTarget (Target * target)

    Returns the number format setting for the given target, or the default if target is invalid.

    Defined at line 606 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • ErrOr<Target *> GetRunnableTarget (ConsoleContext * context, const Command & cmd)

    Makes sure there is a runnable target, creating one if necessary. In the success case, the

    returned target should be used instead of the one from the command (it may be a new one).

    Defined at line 621 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • FoundName FindName (const FindNameContext & context, const FindNameOptions & options, const ParsedIdentifier & identifier)

    Main variable and type name finding function. Searches the local, "this", and global scopes for

    one or more things with a matching name. The first version finds the first exact match of any

    type, the second uses the options to customize what and how many results are returned.

    The variant that returns a single value ignores the max_results of the options and always returns

    the first thing.

    Defined at line 509 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • void DispatchCommand (const Command & cmd, fxl::RefPtr<CommandContext> cmd_context)

    Runs the given command.

    Defined at line 149 of file ../../src/developer/debug/zxdb/console/command.cc

  • void FindName (const FindNameContext & context, const FindNameOptions & options, const ParsedIdentifier & looking_for, std::vector<FoundName> * results)

    Defined at line 521 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • std::vector<Process *> GetRunningProcesses (System * system)

    Get all the currently running processes. This means that the Target's state is not None and the

    underlying Process object is alive, but may not have any actively running threads (they could be

    suspended, in an exception state or any other valid state).

    Defined at line 644 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • Err FormatBreakpointContext (const Location & location, const SourceFileProvider & file_provider, bool enabled, OutputBuffer * out)

    Creates a source code context of the given location and puts it in the output buffer. This does

    not write disassembly since that would require asynchronously getting the memory which isn't as

    important for breakpoints.

    If there are no symbols or the file can't be found, returns the error and doesn't write anything

    to the buffer.

    Generally the location passed here should be the location of a resolved BreakpointLocation since

    the breakpoint itself won't have a fully qualified file name, and the breakpoint may move

    slightly when it's actually applied.

    Build_dir_prefs is used to find relative files by FormatSourceFileContext().

    Defined at line 575 of file ../../src/developer/debug/zxdb/console/format_context.cc

  • OutputBuffer FormatSourceLine (const FormatSourceOpts & opts, bool is_highlight_line, const std::string & line)

    Syntax highlights the given source line according to the language's rules. The is_highlight_line

    flag indicates whether to apply opts.highlight_line and opts.highlight_column to the current

    line.

    Defined at line 593 of file ../../src/developer/debug/zxdb/console/format_context.cc

  • Err VerifySystemHasRunningProcess (System * system)

    If the system has at least one running process, returns no error. If not, returns an error

    describing that there must be a process running.

    When doing global things like System::Continue(), it will succeed if there are no running

    programs (it will successfully continue all 0 processes). This is confusing to the user so this

    function is used to check first.

    Defined at line 654 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • VisitResult VisitLocalVariables (const CodeBlock * block, fit::function<VisitResult (const Variable *)> visitor)

    Searches the code block for local variables. This includes all nested code blocks and function

    parameters, but does not go into the "this" class or any non-function scopes like the current or

    global namespace (that's what the later functions do).

    The "visit" variant calls the callback for every variable in order of priority for as long as the

    visitor reports "continue." The "find" variant does an exact string search, the "prefix" variant

    does a prefix search.

    Defined at line 567 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • void InitializeSchemas ()

    Schemas need to be initialized together because some schemas can add settings to other schemas.

    If we made it completely lazy, when the first thread is spun up, it could make new settings

    appear which is not what the user would expect.

    Defined at line 15 of file ../../src/developer/debug/zxdb/client/setting_schema_definition.cc

  • void FindLocalVariable (const FindNameOptions & options, const CodeBlock * block, const ParsedIdentifier & looking_for, std::vector<FoundName> * results)

    Defined at line 586 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • const std::map<Verb, VerbRecord> & GetVerbs ()

    Returns all known verbs. The contents of this map will never change once

    it is called.

    Defined at line 99 of file ../../src/developer/debug/zxdb/console/verbs.cc

  • void ProcessCommandCallback (fxl::WeakPtr<Target> target, bool display_message_on_success, const Err & err, fxl::RefPtr<CommandContext> cmd_context)

    Callback for the process commands that displays the current process and what happened.

    The verb affects the message printed to the screen.

    The optional callback parameter will be issued with the error for calling code to identify the

    error.

    Defined at line 658 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • std::ostream & operator<< (std::ostream & out, const ExprValue & value)

    Unit tests often use ExprValue and we want it to print in unit tests.

    Defined at line 311 of file ../../src/developer/debug/zxdb/expr/expr_value.cc

  • std::string VerbToString (Verb v)

    Converts the given verb to the canonical name.

    Defined at line 191 of file ../../src/developer/debug/zxdb/console/verbs.cc

  • const VerbRecord * GetVerbRecord (Verb verb)

    Returns the record for the given verb. If the verb is not registered (should

    not happen) or is kNone (this is what noun-only commands use), returns null.

    Defined at line 171 of file ../../src/developer/debug/zxdb/console/verbs.cc

  • const std::map<std::string, Verb> & GetStringVerbMap ()

    Returns the mapping from possible inputs to the noun/verb. This is an

    inverted version of the map returned by GetNouns()/GetVerbs();

    Defined at line 179 of file ../../src/developer/debug/zxdb/console/verbs.cc

  • void AsyncPrintReturnValue (const FunctionReturnInfo & info, fit::deferred_callback cb)

    Defined at line 668 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void ScheduleAsyncPrintReturnValue (const FunctionReturnInfo & info)

    Schedules the function's return information to be printed from a PostStopTask on the thread

    (the thread is in the FunctionReturnInfo).

    This must only be called from a ThreadController::OnThreadStop handler: in normal use this

    callback will be given to a thread controller to issue when a function return happens.

    The PostStopTask that this function schedules will evaluate the return value, print it, and then

    notify the thread that it can resume its normal behavior (either a stop or a continue).

    If this function returns void or there's an error, this does nothing.

    Defined at line 711 of file ../../src/developer/debug/zxdb/console/command_utils.cc

  • void AppendSettingsVerbs (std::map<Verb, VerbRecord> * verbs)

    These functions add records for the verbs they support to the given map.

    Defined at line 797 of file ../../src/developer/debug/zxdb/console/verbs_settings.cc

  • void FindMember (const FindNameContext & context, const FindNameOptions & options, const Collection * object, const ParsedIdentifier & looking_for, const Variable * optional_object_ptr, std::vector<FoundName> * result)

    Searches for the named variable or type on the given collection. This is the lower-level function

    and assumes a valid object. The result can be either a kType or a kMemberVariable.

    If the ProcessSymbols is non-null, this function will also search for type names defined in the

    collection. Otherwise, only data members will be searched.

    The optional symbol context is the symbol context for the current code. it will be used to

    prioritize symbol searching to the current module if given.

    If the result is a member variable, the optional_object_ptr will be used to construct the

    FoundName object. It can be null if the caller does not have a variable for the object it's

    looking up (just doing a type query).

    Defined at line 607 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • void FindMemberOnThis (const FindNameContext & context, const FindNameOptions & options, const ParsedIdentifier & looking_for, std::vector<FoundName> * result)

    Attempts the resolve the given named member variable or type on the "this" pointer associated

    with the given code block. Fails if the function has no "this" pointer or the type name / data

    member isn't found.

    If the ProcessSymbols is non-null, this function will also search for type names defined in the

    collection. Otherwise, only data members will be searched.

    The optional symbol context is the symbol context for the current code. it will be used to

    prioritize symbol searching to the current module if given.

    Defined at line 619 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • VisitResult FindIndexedName (const FindNameContext & context, const FindNameOptions & options, const ParsedIdentifier & current_scope, const ParsedIdentifier & looking_for, bool search_containing, std::vector<FoundName> * results)

    Attempts to resolve the named |looking_for| in the index.

    The |current_scope| is the namespace to start looking in. If |search_containing| is true, parent

    scopes of the |current_scope| are also searched, otherwise only exact matches in that scope will

    be found.

    Defined at line 645 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • void FindIndexedNameInModule (const FindNameOptions & options, const ModuleSymbols * module_symbols, const ParsedIdentifier & current_scope, const ParsedIdentifier & looking_for, bool search_containing, std::vector<FoundName> * results)

    Searches a specific index and current namespace for a global variable or type of the given name.

    The current_scope would be the current namespace + class from where to start the search.

    Defined at line 656 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • bool DwarfTagIsType (DwarfTag tag)

    Returns true if the tag defines a type.

    Defined at line 101 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.cc

  • const std::string * GetSingleComponentIdentifierName (const ParsedIdentifier & ident)

    In many contexts (like function parameters and local variables) an identifier name can't have any

    :: or template parameters and can have only one component. If this identifier satisfies this

    requirement, a pointer to the single string is returned. If there is zero or more than one

    component or any template specs, returns null.

    The returned pointer will be invalidated if the Identifier is mutated.

    Defined at line 697 of file ../../src/developer/debug/zxdb/expr/find_name.cc

  • bool DwarfTagIsTypeModifier (DwarfTag tag)

    Returns true if the tag is one of the type modified variants (pointers, references, typedefs,

    const, volatile, etc.). See also "DwarfTagIsCVQualifier() variant below.

    Defined at line 116 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.cc

  • bool DwarfTagIsCVQualifier (DwarfTag tag)

    Returns true for C-V qualifiers. Also includes "restrict" for C99 and "_Atomic" for C11. This

    is basically anything that should be ignored to get an underlying type name, but does not invlude

    typdefs (since these have a different name).

    Defined at line 124 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.cc

  • bool DwarfTagIsEitherReference (DwarfTag tag)

    Returns true if the dwarf tag is a reference or rvalue reference.

    Defined at line 129 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.cc

  • bool DwarfTagIsPointerOrReference (DwarfTag tag)

    Returns true if the tag is any reference type or a pointer.

    Defined at line 133 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.cc

  • std::string DwarfTagToString (DwarfTag tagbool include_number)

    Converts the tag to a string, optionally including the numeric value. Invalid or unknown values

    will be formatted as "<undefined>" and will always include the numeric value.

    Defined at line 137 of file ../../src/developer/debug/zxdb/symbols/dwarf_tag.cc

Variables

size_t kSymbolPointerSize

Defined at line 9 of file ../../src/developer/debug/zxdb/symbols/arch.cc

const char[] kVectorRegisterFormatStr_Signed8

Defined at line 16 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Unsigned8

Defined at line 17 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Signed16

Defined at line 18 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Unsigned16

Defined at line 19 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Signed32

Defined at line 20 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Unsigned32

Defined at line 21 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Signed64

Defined at line 22 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Unsigned64

Defined at line 23 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Signed128

Defined at line 24 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Unsigned128

Defined at line 25 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Float

Defined at line 26 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kVectorRegisterFormatStr_Double

Defined at line 27 of file ../../src/developer/debug/zxdb/expr/vector_register_format.cc

const char[] kStdioHelp

Defined at line 42 of file ../../src/developer/debug/zxdb/console/commands/verb_stdout.cc

const char[] kAnonIdentifierComponentName

Defined at line 81 of file ../../src/developer/debug/zxdb/symbols/identifier_base.cc

const int kMemAnalyzeSizeSwitch

Defined at line 125 of file ../../src/developer/debug/zxdb/console/commands/verb_mem_analyze.cc

const int kMemAnalyzeNumSwitch

Defined at line 126 of file ../../src/developer/debug/zxdb/console/commands/verb_mem_analyze.cc

const uint32_t kDefaultAnalyzeByteSize

Defined at line 130 of file ../../src/developer/debug/zxdb/console/commands/verb_mem_analyze.cc