From be565751620c7f4eb29ae7c305e41062b436b905 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Wed, 3 Jun 2020 17:53:20 +0200 Subject: [PATCH] use DAP final version --- package.json | 2 +- .../contrib/debug/common/debugProtocol.d.ts | 79 ++++++++++++++++++- yarn.lock | 8 +- 3 files changed, 81 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 3c0cef86176..35a4c5a4345 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "vinyl": "^2.0.0", "vinyl-fs": "^3.0.0", "vsce": "1.48.0", - "vscode-debugprotocol": "^1.40.0", + "vscode-debugprotocol": "1.41.0", "vscode-nls-dev": "^3.3.1", "webpack": "^4.16.5", "webpack-cli": "^3.3.8", diff --git a/src/vs/workbench/contrib/debug/common/debugProtocol.d.ts b/src/vs/workbench/contrib/debug/common/debugProtocol.d.ts index 4307295e632..7d1d51444c3 100644 --- a/src/vs/workbench/contrib/debug/common/debugProtocol.d.ts +++ b/src/vs/workbench/contrib/debug/common/debugProtocol.d.ts @@ -120,14 +120,14 @@ declare module DebugProtocol { /** Event message for 'stopped' event type. The event indicates that the execution of the debuggee has stopped due to some condition. - This can be caused by a break point previously set, a stepping action has completed, by executing a debugger statement etc. + This can be caused by a break point previously set, a stepping request has completed, by executing a debugger statement etc. */ export interface StoppedEvent extends Event { // event: 'stopped'; body: { /** The reason for the event. For backward compatibility this string is shown in the UI if the 'description' attribute is missing (but it must not be translated). - Values: 'step', 'breakpoint', 'exception', 'pause', 'entry', 'goto', 'function breakpoint', 'data breakpoint', etc. + Values: 'step', 'breakpoint', 'exception', 'pause', 'entry', 'goto', 'function breakpoint', 'data breakpoint', 'instruction breakpoint', etc. */ reason: string; /** The full reason for the event, e.g. 'Paused on exception'. This string is shown in the UI as is and must be translated. */ @@ -765,6 +765,31 @@ declare module DebugProtocol { }; } + /** SetInstructionBreakpoints request; value of command field is 'setInstructionBreakpoints'. + Replaces all existing instruction breakpoints. Typically, instruction breakpoints would be set from a diassembly window. + To clear all instruction breakpoints, specify an empty array. + When an instruction breakpoint is hit, a 'stopped' event (with reason 'instruction breakpoint') is generated. + Clients should only call this request if the capability 'supportsInstructionBreakpoints' is true. + */ + export interface SetInstructionBreakpointsRequest extends Request { + // command: 'setInstructionBreakpoints'; + arguments: SetInstructionBreakpointsArguments; + } + + /** Arguments for 'setInstructionBreakpoints' request */ + export interface SetInstructionBreakpointsArguments { + /** The instruction references of the breakpoints */ + breakpoints: InstructionBreakpoint[]; + } + + /** Response to 'setInstructionBreakpoints' request */ + export interface SetInstructionBreakpointsResponse extends Response { + body: { + /** Information about the breakpoints. The array elements correspond to the elements of the 'breakpoints' array. */ + breakpoints: Breakpoint[]; + }; + } + /** Continue request; value of command field is 'continue'. The request starts the debuggee to run again. */ @@ -804,6 +829,8 @@ declare module DebugProtocol { export interface NextArguments { /** Execute 'next' for this thread. */ threadId: number; + /** Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed. */ + granularity?: SteppingGranularity; } /** Response to 'next' request. This is just an acknowledgement, so no body field is required. */ @@ -829,6 +856,8 @@ declare module DebugProtocol { threadId: number; /** Optional id of the target to step into. */ targetId?: number; + /** Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed. */ + granularity?: SteppingGranularity; } /** Response to 'stepIn' request. This is just an acknowledgement, so no body field is required. */ @@ -848,6 +877,8 @@ declare module DebugProtocol { export interface StepOutArguments { /** Execute 'stepOut' for this thread. */ threadId: number; + /** Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed. */ + granularity?: SteppingGranularity; } /** Response to 'stepOut' request. This is just an acknowledgement, so no body field is required. */ @@ -868,6 +899,8 @@ declare module DebugProtocol { export interface StepBackArguments { /** Execute 'stepBack' for this thread. */ threadId: number; + /** Optional granularity to step. If no granularity is specified, a granularity of 'statement' is assumed. */ + granularity?: SteppingGranularity; } /** Response to 'stepBack' request. This is just an acknowledgement, so no body field is required. */ @@ -1560,6 +1593,10 @@ declare module DebugProtocol { supportsBreakpointLocationsRequest?: boolean; /** The debug adapter supports the 'clipboard' context value in the 'evaluate' request. */ supportsClipboardContext?: boolean; + /** The debug adapter supports stepping granularities (argument 'granularity') for the stepping requests. */ + supportsSteppingGranularity?: boolean; + /** The debug adapter supports adding breakpoints based on instruction references. */ + supportsInstructionBreakpoints?: boolean; } /** An ExceptionBreakpointsFilter is shown in the UI as an option for configuring how exceptions are dealt with. */ @@ -1896,7 +1933,28 @@ declare module DebugProtocol { hitCondition?: string; } - /** Information about a Breakpoint created in setBreakpoints or setFunctionBreakpoints. */ + /** Properties of a breakpoint passed to the setInstructionBreakpoints request */ + export interface InstructionBreakpoint { + /** The instruction reference of the breakpoint. + This should be a memory or instruction pointer reference from an EvaluateResponse, Variable, StackFrame, GotoTarget, or Breakpoint. + */ + instructionReference: string; + /** An optional offset from the instruction reference. + This can be negative. + */ + offset?: number; + /** An optional expression for conditional breakpoints. + It is only honored by a debug adapter if the capability 'supportsConditionalBreakpoints' is true. + */ + condition?: string; + /** An optional expression that controls how many hits of the breakpoint are ignored. + The backend is expected to interpret the expression as needed. + The attribute is only honored by a debug adapter if the capability 'supportsHitConditionalBreakpoints' is true. + */ + hitCondition?: string; + } + + /** Information about a Breakpoint created in setBreakpoints, setFunctionBreakpoints, setInstructionBreakpoints, or setDataBreakpoints. */ export interface Breakpoint { /** An optional identifier for the breakpoint. It is needed if breakpoint events are used to update or remove breakpoints. */ id?: number; @@ -1918,8 +1976,23 @@ declare module DebugProtocol { If no end line is given, then the end column is assumed to be in the start line. */ endColumn?: number; + /** An optional memory reference to where the breakpoint is set. */ + instructionReference?: string; + /** An optional offset from the instruction reference. + This can be negative. + */ + offset?: number; } + /** The granularity of one 'step' in the stepping requests 'next', 'stepIn', 'stepOut', and 'stepBack'. + 'statement': The step should allow the program to run until the current statement has finished executing. + The meaning of a statement is determined by the adapter and it may be considered equivalent to a line. + For example 'for(int i = 0; i < 10; i++) could be considered to have 3 statements 'int i = 0', 'i < 10', and 'i++'. + 'line': The step should allow the program to run until the current source line has executed. + 'instruction': The step should allow one instruction to execute (e.g. one x86 instruction). + */ + export type SteppingGranularity = 'statement' | 'line' | 'instruction'; + /** A StepInTarget can be used in the 'stepIn' request and determines into which single target the stepIn request should step. */ export interface StepInTarget { /** Unique identifier for a stepIn target. */ diff --git a/yarn.lock b/yarn.lock index 2f3f58faceb..dd88c0485c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9678,10 +9678,10 @@ vsce@1.48.0: yauzl "^2.3.1" yazl "^2.2.2" -vscode-debugprotocol@^1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/vscode-debugprotocol/-/vscode-debugprotocol-1.40.0.tgz#63e1f670a6f5c4928f3f91b27b259a21c4db7861" - integrity sha512-Fwze+9qbLDPuQUhtITJSu/Vk6zIuakNM1iR2ZiZRgRaMEgBpMs2JSKaT0chrhJHCOy6/UbpsUbUBIseF6msV+g== +vscode-debugprotocol@1.41.0: + version "1.41.0" + resolved "https://registry.yarnpkg.com/vscode-debugprotocol/-/vscode-debugprotocol-1.41.0.tgz#fc99b01dee26e9f25cbb5708318fc0081002808c" + integrity sha512-Sxp7kDDuhpEZiDaIfhM0jLF3RtMqvc6CpoESANE77t351uezsd/oDoqALLcOnmmsDzTgQ3W0sCvM4gErnjDFpA== vscode-nls-dev@^3.3.1: version "3.3.1"