Table of Contents

Interface IBreakpointTable

Namespace
RDCore.SDK.Runtime.Abstract.Execution
Assembly
RDCore.SDK.dll

The lines of the source a program that is run under a debugger waits at before it runs them.

public interface IBreakpointTable

Remarks

A breakpoint is a place in the source, not in the code: the code of a module is loaded again whenever the document is edited, and a breakpoint stays on its line. The place is a line of a module, and the instruction it is is found in the code that runs - the first instruction of a procedure's body that begins on the line. A line with no statement on it is not a place a program waits at, and is not looked for after: the client that sets breakpoints says which lines they are on, and is told which of them are statements (Verify(IEnumerable<InstructionList>, int)).

The program waits before the instruction, as it does at a step, and is resumed from the same instruction without waiting there again.

⚖️RDCore provides an implementation of this interface licensed under GPLv3.

Properties

HasAny

Whether any line has a breakpoint, which is all that the interpreter looks at between two instructions when none has.

bool HasAny { get; }

Property Value

bool

Methods

Clear()

Removes every breakpoint.

void Clear()

IsAt(string, InstructionList, int, out ExpressionNode?)

Whether the instruction at offset of body is where a breakpoint is.

bool IsAt(string module, InstructionList body, int offset, out ExpressionNode? condition)

Parameters

module string

The address of the module whose procedure the body is of.

body InstructionList

The body.

offset int

The offset of the instruction about to run.

condition ExpressionNode

The Condition of the breakpoint there, which the interpreter evaluates before it waits; null when it has none.

Returns

bool

Set(string, IReadOnlyCollection<RuntimeBreakpoint>)

Replaces the breakpoints of a module.

void Set(string module, IReadOnlyCollection<RuntimeBreakpoint> breakpoints)

Parameters

module string

The address of the module, as its symbol has it.

breakpoints IReadOnlyCollection<RuntimeBreakpoint>

The breakpoints, one per line. None removes the module's breakpoints.

Verify(IEnumerable<InstructionList>, int)

Whether a line is one a program can wait at: a statement of one of the bodies begins on it.

public static bool Verify(IEnumerable<InstructionList> bodies, int line)

Parameters

bodies IEnumerable<InstructionList>

The bodies of the module's procedures.

line int

A zero-based line of the source.

Returns

bool