import { DebugProtocol } from "@vscode/debugprotocol"; import { GdbClient } from "./gdbClient"; import SourceMap from "./sourceMap"; import { DisassemblyManager } from "./disassembly"; export interface BreakpointReference { address: number; breakpoint: T; hitCount: number; size?: number; } /** * Interface for sizes map, which can be implemented with persistence for VS Code */ export interface DataBreakpointSizes { get(id: string): number | undefined; set(id: string, size: number): void; delete(id: string): void; clear(): void; } /** * Breakpoint manager * * Handles adding and removing breakpoints to program */ declare class BreakpointManager { private gdb; private sourceMap; private disassembly; private sizes; /** Source breakpoints mapped by source and line number */ private sourceBreakpoints; /** Source breakpoints mapped by address */ private sourceBreakpointsByAddress; /** Data breakpoints mapped by address */ private dataBreakpoints; /** Instruction breakoint addresses */ private instructionBreakpoints; /** Temporary breakoint address groups */ private temporaryBreakpoints; private nextId; constructor(gdb: GdbClient, sourceMap: SourceMap, disassembly: DisassemblyManager, sizes: DataBreakpointSizes); setSourceBreakpoints(source: DebugProtocol.Source, breakpoints: DebugProtocol.SourceBreakpoint[]): Promise; sourceBreakpointAtAddress(address: number): BreakpointReference | undefined; setDataBreakpoints(breakpoints: DebugProtocol.DataBreakpoint[]): Promise; parseDataId(dataId: string): { name: string; displayValue: string; address: number; }; dataBreakpointAtAddress(address: number): BreakpointReference | undefined; setInstructionBreakpoints(breakpoints: DebugProtocol.InstructionBreakpoint[]): Promise; instructionBreakpointAtAddress(address: number): boolean; addTemporaryBreakpoints(pc: number): Promise; hasTemporaryBreakpoints(): boolean; temporaryBreakpointAtAddress(pc: number): boolean; clearTemporaryBreakpoints(): Promise; } export default BreakpointManager;