uae-dap
Version:
Debug Adapter Protocol for Amiga development with FS-UAE or WinUAE
118 lines (117 loc) • 7.5 kB
TypeScript
import { LoggingDebugSession } from "@vscode/debugadapter";
import { DebugProtocol } from "@vscode/debugprotocol";
import { GdbClient, HaltEvent } from "./gdbClient";
import BreakpointManager, { DataBreakpointSizes } from "./breakpointManager";
import { NumberFormat } from "./utils/strings";
import { Emulator, EmulatorType } from "./emulator";
import VariableManager, { MemoryFormat, SourceConstantResolver } from "./variableManager";
import { VasmOptions } from "./vasm";
import { DisassemblyManager } from "./disassembly";
import StackManager from "./stackManager";
/**
* Additional arguments for launch/attach request
*/
interface CustomArguments {
/** Local path of target Amiga binary */
program: string;
/** Remote path of target Amiga binary (default: SYS:{basename of program}) */
remoteProgram?: string;
/** Automatically stop target after launch (default: false) */
stopOnEntry?: boolean;
/** Enable verbose logging (default: false) */
trace?: boolean;
/** Host name of the debug server (default: localhost) */
serverName?: string;
/** Port number of the debug server (default: 2345) */
serverPort?: number;
/** Exception mask (default: 0b111100) */
exceptionMask?: number;
/** Options for vasm assembler, used when extracting constants from sources */
vasm?: VasmOptions;
/** Display format per context */
memoryFormats?: Record<string, MemoryFormat>;
}
export interface LaunchRequestArguments extends DebugProtocol.LaunchRequestArguments, CustomArguments {
/** Emulator program type (default: winuae for windows, fs-uae for other platforms) */
emulatorType?: EmulatorType;
/** Path of emulator executable (default: use bundled version) */
emulatorBin?: string;
/** Additional CLI args to pass to emulator program. Remote debugger args are added automatically */
emulatorArgs?: string[];
}
export interface AttachRequestArguments extends DebugProtocol.AttachRequestArguments, CustomArguments {
}
export interface VariableDisplayFormatRequest {
/** info of the variable */
variableInfo: {
variable: DebugProtocol.Variable;
};
/** Requested format */
variableDisplayFormat: NumberFormat;
}
export interface DisassembledFileContentsRequest {
/** path of dbgasm file */
path: string;
}
export declare class UAEDebugSession extends LoggingDebugSession {
protected gdb: GdbClient;
protected emulator?: Emulator;
protected trace: boolean;
protected stopOnEntry: boolean;
protected exceptionMask: number;
protected breakpoints?: BreakpointManager;
protected variables?: VariableManager;
protected disassembly?: DisassemblyManager;
protected stack?: StackManager;
protected dataBreakpointSizes: DataBreakpointSizes;
constructor();
protected initializeRequest(response: DebugProtocol.InitializeResponse): void;
protected launchRequest(response: DebugProtocol.LaunchResponse, customArgs: LaunchRequestArguments): Promise<void>;
protected attachRequest(response: DebugProtocol.LaunchResponse, customArgs: LaunchRequestArguments): Promise<void>;
protected launchOrAttach(response: DebugProtocol.Response, customArgs: CustomArguments, startEmulator?: boolean, debug?: boolean): Promise<void>;
protected configurationDoneRequest(response: DebugProtocol.ConfigurationDoneResponse): void;
protected restartRequest(response: DebugProtocol.RestartResponse): void;
shutdown(): void;
protected setBreakPointsRequest(response: DebugProtocol.SetBreakpointsResponse, args: DebugProtocol.SetBreakpointsArguments): Promise<void>;
protected setInstructionBreakpointsRequest(response: DebugProtocol.SetInstructionBreakpointsResponse, args: DebugProtocol.SetInstructionBreakpointsArguments): Promise<void>;
protected dataBreakpointInfoRequest(response: DebugProtocol.DataBreakpointInfoResponse, args: DebugProtocol.DataBreakpointInfoArguments): Promise<void>;
protected setDataBreakpointsRequest(response: DebugProtocol.SetDataBreakpointsResponse, args: DebugProtocol.SetDataBreakpointsArguments): Promise<void>;
protected setExceptionBreakPointsRequest(response: DebugProtocol.SetExceptionBreakpointsResponse, args: DebugProtocol.SetExceptionBreakpointsArguments): Promise<void>;
protected threadsRequest(response: DebugProtocol.ThreadsResponse): Promise<void>;
protected stackTraceRequest(response: DebugProtocol.StackTraceResponse, { threadId }: DebugProtocol.StackTraceArguments): Promise<void>;
protected scopesRequest(response: DebugProtocol.ScopesResponse, { frameId }: DebugProtocol.ScopesArguments): void;
protected exceptionInfoRequest(response: DebugProtocol.ExceptionInfoResponse): Promise<void>;
protected pauseRequest(response: DebugProtocol.PauseResponse, { threadId }: DebugProtocol.PauseArguments): Promise<void>;
protected continueRequest(response: DebugProtocol.ContinueResponse): Promise<void>;
protected nextRequest(response: DebugProtocol.NextResponse, { threadId }: DebugProtocol.NextArguments): Promise<void>;
protected stepInRequest(response: DebugProtocol.StepInResponse, { threadId }: DebugProtocol.StepInArguments): Promise<void>;
protected stepOutRequest(response: DebugProtocol.StepOutResponse, { threadId }: DebugProtocol.StepOutArguments): Promise<void>;
protected variablesRequest(response: DebugProtocol.VariablesResponse, args: DebugProtocol.VariablesArguments): Promise<void>;
protected setVariableRequest(response: DebugProtocol.SetVariableResponse, { variablesReference, name, value }: DebugProtocol.SetVariableArguments): Promise<void>;
protected evaluateRequest(response: DebugProtocol.EvaluateResponse, args: DebugProtocol.EvaluateArguments): Promise<void>;
protected completionsRequest(response: DebugProtocol.CompletionsResponse, args: DebugProtocol.CompletionsArguments): Promise<void>;
protected readMemoryRequest(response: DebugProtocol.ReadMemoryResponse, args: DebugProtocol.ReadMemoryArguments): Promise<void>;
protected writeMemoryRequest(response: DebugProtocol.WriteMemoryResponse, args: DebugProtocol.WriteMemoryArguments): Promise<void>;
protected disassembleRequest(response: DebugProtocol.DisassembleResponse, args: DebugProtocol.DisassembleArguments): Promise<void>;
protected sourceRequest(response: DebugProtocol.SourceResponse, args: DebugProtocol.SourceArguments): void;
protected customRequest(command: string, response: DebugProtocol.Response, args: any): Promise<void>;
protected handleAsyncRequest(response: DebugProtocol.Response, cb: () => Promise<void>): Promise<void>;
protected sendStoppedEvent(threadId: number, reason: string, preserveFocusHint?: boolean): void;
protected errorString(err: unknown): string;
/**
* Process a Source object before returning in to the client
*/
protected processSource(source?: DebugProtocol.Source): void;
/**
* Event handler for stop/halt event
*/
protected handleStop(e: HaltEvent): Promise<void>;
protected getSourceConstantResolver(args: LaunchRequestArguments): SourceConstantResolver;
protected onCpuFrame(_address: number): Promise<void>;
protected getDataBreakpointSize(_displayValue: string, _name: string): Promise<number>;
protected breakpointManager(): BreakpointManager;
protected variableManager(): VariableManager;
protected disassemblyManager(): DisassemblyManager;
protected stackManager(): StackManager;
}
export {};