Change:
<!-- Do you have a question? Please ask it on --<!-- Use Help Report Issues to prefill these. --- VSCode Version: 1.14.2 OS Version: MacOS Sierra Steps to Reproduce: some breakpoints. to find shortcut to navigate between breakpoints without running the file. <!-- Launch with to check. --Reproduces without extensions: Yes
We accept PRs that fix this - especaially if more users ask for this feature request
Hi, I'm working on this. Will submit a PR soon.
Having this feature could remove the need for bookmarks, fixing
Does not work for me: set breakpoints in various files. run "Go To Next Breakpoint" action Observe: completely random behaviour. Sometimes I can only go through the breakpoints in one file, sometimes I can switch back and forth between two files. But I'm not able to step through all breakpoints in all files in deterministic order.
Dup of
Verified . Marking this as verified as well.

Discussion:
} } <del> export function openBreakpointSource(breakpoint: Breakpoint, sideBySide: boolean, preserveFocus: boolean, debugService: IDebugService, editorService: IEditorService): TPromise<IEditor> { </del> <ins> export function openBreakpointSource(breakpoint: IBreakpoint, sideBySide: boolean, preserveFocus: boolean, debugService: IDebugService, editorService: IEditorService): TPromise<IEditor> { </ins> if (breakpoint.uri.scheme === DEBUG_SCHEME && debugService.state === State.Inactive) { return TPromise.as(null); }

import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; <ins> import { IEditorService } from 'vs/platform/editor/common/editor'; import { openBreakpointSource } from 'vs/workbench/parts/debug/browser/breakpointsView'; </ins> class ToggleBreakpointAction extends EditorAction { constructor() {

} } <ins> class GoToBreakpointAction extends EditorAction { constructor(private isNext, opts) { super(opts); } public run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void | TPromise<void, any> { const debugService = accessor.get(IDebugService); const editorService = accessor.get(IEditorService); const currentUri = editor.getModel().uri; const currentLine = editor.getPosition().lineNumber; //Breakpoints returned from `getBreakpoints` are already sorted. const allEnabledBreakpoints = debugService.getModel().getBreakpoints({ enabledOnly: true }); //Try to find breakpoint in current file let moveBreakpoint = this.isNext ? allEnabledBreakpoints.filter(bp => bp.uri.toString() === currentUri.toString() && bp.lineNumber > currentLine)[0] : allEnabledBreakpoints.filter(bp => bp.uri.toString() === currentUri.toString() && bp.lineNumber < currentLine)[0]; //Try to find breakpoints in following files if (!moveBreakpoint) { moveBreakpoint = this.isNext ? allEnabledBreakpoints.filter(bp => bp.uri.toString() > currentUri.toString())[0] : allEnabledBreakpoints.filter(bp => bp.uri.toString() < currentUri.toString())[0]; } //Move to first possible breakpoint if (!moveBreakpoint) { moveBreakpoint = allEnabledBreakpoints[0]; } if (moveBreakpoint) { openBreakpointSource(moveBreakpoint, false, true, debugService, editorService); } return TPromise.as(null); } } class GoToNextBreakpointAction extends GoToBreakpointAction { constructor() { super(true, { id: 'editor.debug.action.goToNextBreakpoint', label: nls.localize('goToNextBreakpoint', "Debug: Go To Next Breakpoint"), alias: 'Debug: Go To Next Breakpoint', precondition: null }); } } class GoToPreviousBreakpointAction extends GoToBreakpointAction { constructor() { super(false, { id: 'editor.debug.action.goToPreviousBreakpoint', label: nls.localize('goToPreviousBreakpoint', "Debug: Go To Previous Breakpoint"), alias: 'Debug: Go To Previous Breakpoint', precondition: null }); } } </ins> registerEditorAction(ToggleBreakpointAction); registerEditorAction(ConditionalBreakpointAction); registerEditorAction(LogPointAction);

registerEditorAction(SelectionToReplAction); registerEditorAction(SelectionToWatchExpressionsAction); registerEditorAction(ShowDebugHoverAction); <ins> registerEditorAction(GoToNextBreakpointAction); registerEditorAction(GoToPreviousBreakpointAction); </ins>

export interface IModel extends ITreeElement { getSessions(): ReadonlyArray<ISession>; <del> getBreakpoints(filter?: { uri?: uri, lineNumber?: number, column?: number }): ReadonlyArray<IBreakpoint>; </del> <ins> getBreakpoints(filter?: { uri?: uri, lineNumber?: number, column?: number, enabledOnly?: boolean }): ReadonlyArray<IBreakpoint>; </ins> areBreakpointsActivated(): boolean; getFunctionBreakpoints(): ReadonlyArray<IFunctionBreakpoint>; getExceptionBreakpoints(): ReadonlyArray<IExceptionBreakpoint>;