@@ -362,8 +362,12 @@ export module DebugProtocol {
362
362
}
363
363
364
364
/** StepIn request; value of command field is "stepIn".
365
- The request starts the debuggee to run again for one step.
365
+ The request starts the debuggee to step into a function/method if possible.
366
+ If it cannot step into a target, "stepIn" behaves like "next".
366
367
The debug adapter first sends the StepInResponse and then a StoppedEvent (event type 'step') after the step has completed.
368
+ If there are multiple function/method calls (or other targets) on the source line,
369
+ the optional argument 'targetId' can be used to control into which target the "stepIn" should occur.
370
+ The list of possible targets for a given source line can be retrieved via the "stepInTargets" request.
367
371
*/
368
372
export interface StepInRequest extends Request {
369
373
arguments : StepInArguments ;
@@ -372,6 +376,8 @@ export module DebugProtocol {
372
376
export interface StepInArguments {
373
377
/** Continue execution for this thread. */
374
378
threadId : number ;
379
+ /** Optional id of the target to step into. */
380
+ targetId ?: number | string ;
375
381
}
376
382
/** Response to "stepIn" request. This is just an acknowledgement, so no body field is required. */
377
383
export interface StepInResponse extends Response {
@@ -613,6 +619,31 @@ export module DebugProtocol {
613
619
} ;
614
620
}
615
621
622
+ /** StepInTargets request; value of command field is "stepInTargets".
623
+ This request retrieves the possible stepIn targets for the specified source location.
624
+ These targets can be used in the "stepIn" request.
625
+ The StepInTargets may only be called if the "supportsStepInTargetsRequest" capability exists and is true.
626
+ */
627
+ export interface StepInTargetsRequest extends Request {
628
+ arguments : StepInTargetsArguments ;
629
+ }
630
+ /** Arguments for "stepInTargets" request. */
631
+ export interface StepInTargetsArguments {
632
+ /** The source of the source location. */
633
+ source : Source ;
634
+ /** The line of the source location. */
635
+ line : number ;
636
+ /** An optional column of the source location. */
637
+ column ?: number ;
638
+ }
639
+ /** Response to "stepInTargets" request. */
640
+ export interface StepInTargetsResponse extends Response {
641
+ body : {
642
+ /** The possible stepIn targets of the specified source location. */
643
+ targets : StepInTarget [ ] ;
644
+ } ;
645
+ }
646
+
616
647
//---- Types
617
648
618
649
/** Information about the capabilities of a debug adapter. */
@@ -633,6 +664,8 @@ export module DebugProtocol {
633
664
supportsSetVariable ?: boolean ;
634
665
/** The debug adapter supports restarting a frame. */
635
666
supportsRestartFrame ?: boolean ;
667
+ /** The debug adapter supports stepInTargetsRequest. */
668
+ supportsStepInTargetsRequest ?: boolean ;
636
669
}
637
670
638
671
/** An ExceptionBreakpointsFilter is shown in the UI as an option for configuring how exceptions are dealt with. */
@@ -832,4 +865,14 @@ export module DebugProtocol {
832
865
/** An optional end column of the actual range covered by the breakpoint. If no end line is given, then the end column is assumed to be in the start line. */
833
866
endColumn ?: number ;
834
867
}
868
+
869
+ /** A StepInTarget can be used in the 'stepIn' request and determines into
870
+ * which single target the stepIn request should step.
871
+ */
872
+ export interface StepInTarget {
873
+ /** Unique identifier for a stepIn target. */
874
+ id : number | string ;
875
+ /** The name of the stepIn target (shown in the UI). */
876
+ label : string ;
877
+ }
835
878
}
0 commit comments