提交 86b95769 编写于 作者: I isidor

debug: get exception breakpoints from the adapter

fixes #3015
上级 b1afb8d9
......@@ -282,7 +282,7 @@ export class DebugEditorModelManager implements IWorkbenchContribution {
}
return result ? result :
!session || session.capablities.supportsConditionalBreakpoints ? {
!session || session.capabilities.supportsConditionalBreakpoints ? {
glyphMarginClassName: 'debug-breakpoint-conditional-glyph',
hoverMessage: breakpoint.condition,
stickiness: editorcommon.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges
......
......@@ -113,7 +113,7 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget {
private getExpression(namesToFind: string[]): TPromise<Expression> {
const session = this.debugService.getActiveSession();
const focusedStackFrame = this.debugService.getViewModel().getFocusedStackFrame();
if (session.capablities.supportsEvaluateForHovers) {
if (session.capabilities.supportsEvaluateForHovers) {
return evaluateExpression(session, focusedStackFrame, new Expression(namesToFind.join('.'), true), 'hover');
}
......
......@@ -211,7 +211,7 @@ export interface IRawAdapter extends IRawEnvAdapter {
export interface IRawDebugSession extends ee.EventEmitter {
getType(): string;
isAttach: boolean;
capablities: DebugProtocol.Capabilites;
capabilities: DebugProtocol.Capabilites;
disconnect(restart?: boolean, force?: boolean): TPromise<DebugProtocol.DisconnectResponse>;
next(args: DebugProtocol.NextArguments): TPromise<DebugProtocol.NextResponse>;
......
......@@ -389,6 +389,13 @@ export class Model extends ee.EventEmitter implements debug.IModel {
return this.exceptionBreakpoints;
}
public setExceptionBreakpoints(data: [{ filter: string, label: string }]): void {
if (data) {
this.exceptionBreakpoints = data.map(d =>
new ExceptionBreakpoint(d.filter, d.label, this.exceptionBreakpoints.some(ebp => ebp.filter === d.filter && ebp.enabled)));
}
}
public areBreakpointsActivated(): boolean {
return this.breakpointsActivated;
}
......@@ -399,7 +406,8 @@ export class Model extends ee.EventEmitter implements debug.IModel {
}
public addBreakpoints(rawData: debug.IRawBreakpoint[]): void {
this.breakpoints = this.breakpoints.concat(rawData.map(rawBp => new Breakpoint(new Source(Source.toRawSource(rawBp.uri, this)), rawBp.lineNumber, rawBp.enabled, rawBp.condition)));
this.breakpoints = this.breakpoints.concat(rawData.map(rawBp =>
new Breakpoint(new Source(Source.toRawSource(rawBp.uri, this)), rawBp.lineNumber, rawBp.enabled, rawBp.condition)));
this.breakpointsActivated = true;
this.emit(debug.ModelEvents.BREAKPOINTS_UPDATED);
}
......
......@@ -234,7 +234,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
this.toDispose.push(this.session.addListener2(debug.SessionEvents.INITIALIZED, (event: DebugProtocol.InitializedEvent) => {
aria.alert(nls.localize('programStarted', "Program started."));
this.sendAllBreakpoints().then(() => {
if (this.session.capablities.supportsConfigurationDoneRequest) {
if (this.session.capabilities.supportsConfigurationDoneRequest) {
this.session.configurationDone().done(null, errors.onUnexpectedError);
}
});
......@@ -567,6 +567,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
this.setStateAndEmit(debug.State.Initializing);
this.model.setExceptionBreakpoints(this.session.capabilities.exceptionBreakpointFilters);
return configuration.request === 'attach' ? this.session.attach(configuration) : this.session.launch(configuration);
}).then((result: DebugProtocol.Response) => {
if (openViewlet) {
......
......@@ -25,7 +25,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
private startTime: number;
private stopServerPending: boolean;
public isAttach: boolean;
public capablities: DebugProtocol.Capabilites;
public capabilities: DebugProtocol.Capabilites;
constructor(
private messageService: IMessageService,
......@@ -34,7 +34,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
private adapter: Adapter
) {
super();
this.capablities = {};
this.capabilities = {};
}
private initServer(): TPromise<void> {
......@@ -68,7 +68,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
public initialize(args: DebugProtocol.InitializeRequestArguments): TPromise<DebugProtocol.InitializeResponse> {
return this.send('initialize', args).then(response => {
this.capablities = response.body || this.capablities;
this.capabilities = response.body || this.capabilities;
return response;
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册