提交 4854ac31 编写于 作者: I isidor

fixes #25104

上级 bc61f5d9
...@@ -24,7 +24,6 @@ import { Source } from 'vs/workbench/parts/debug/common/debugSource'; ...@@ -24,7 +24,6 @@ import { Source } from 'vs/workbench/parts/debug/common/debugSource';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
const MAX_REPL_LENGTH = 10000; const MAX_REPL_LENGTH = 10000;
const UNKNOWN_SOURCE_LABEL = nls.localize('unknownSource', "Unknown Source");
export abstract class AbstractOutputElement implements ITreeElement { export abstract class AbstractOutputElement implements ITreeElement {
private static ID_COUNTER = 0; private static ID_COUNTER = 0;
...@@ -388,7 +387,7 @@ export class StackFrame implements IStackFrame { ...@@ -388,7 +387,7 @@ export class StackFrame implements IStackFrame {
public openInEditor(editorService: IWorkbenchEditorService, preserveFocus?: boolean, sideBySide?: boolean): TPromise<any> { public openInEditor(editorService: IWorkbenchEditorService, preserveFocus?: boolean, sideBySide?: boolean): TPromise<any> {
return this.source.name === UNKNOWN_SOURCE_LABEL ? TPromise.as(null) : editorService.openEditor({ return !this.source.available ? TPromise.as(null) : editorService.openEditor({
resource: this.source.uri, resource: this.source.uri,
description: this.source.origin, description: this.source.origin,
options: { options: {
...@@ -466,10 +465,7 @@ export class Thread implements IThread { ...@@ -466,10 +465,7 @@ export class Thread implements IThread {
} }
return response.body.stackFrames.map((rsf, level) => { return response.body.stackFrames.map((rsf, level) => {
if (!rsf) { let source = new Source(rsf.source, rsf.source ? rsf.source.presentationHint : rsf.presentationHint);
return new StackFrame(this, 0, new Source({ name: UNKNOWN_SOURCE_LABEL }, rsf.presentationHint), nls.localize('unknownStack', "Unknown stack location"), null, null);
}
let source = rsf.source ? new Source(rsf.source, rsf.source.presentationHint) : new Source({ name: UNKNOWN_SOURCE_LABEL }, rsf.presentationHint);
if (this.process.sources.has(source.uri.toString())) { if (this.process.sources.has(source.uri.toString())) {
const alreadyCreatedSource = this.process.sources.get(source.uri.toString()); const alreadyCreatedSource = this.process.sources.get(source.uri.toString());
alreadyCreatedSource.presenationHint = source.presenationHint; alreadyCreatedSource.presenationHint = source.presenationHint;
......
...@@ -3,16 +3,22 @@ ...@@ -3,16 +3,22 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import * as nls from 'vs/nls';
import uri from 'vs/base/common/uri'; import uri from 'vs/base/common/uri';
import { DEBUG_SCHEME } from 'vs/workbench/parts/debug/common/debug'; import { DEBUG_SCHEME } from 'vs/workbench/parts/debug/common/debug';
const UNKNOWN_SOURCE_LABEL = nls.localize('unknownSource', "Unknown Source");
export class Source { export class Source {
public uri: uri; public uri: uri;
constructor(public raw: DebugProtocol.Source, public presenationHint: string) { constructor(public raw: DebugProtocol.Source, public presenationHint: string) {
const path = raw.path || raw.name; if (!raw) {
this.uri = raw.sourceReference > 0 ? uri.parse(`${DEBUG_SCHEME}:${path}`) : uri.file(path); this.raw = { name: UNKNOWN_SOURCE_LABEL };
}
const path = this.raw.path || this.raw.name;
this.uri = this.raw.sourceReference > 0 ? uri.parse(`${DEBUG_SCHEME}:${path}`) : uri.file(path);
} }
public get name() { public get name() {
...@@ -27,6 +33,10 @@ export class Source { ...@@ -27,6 +33,10 @@ export class Source {
return this.raw.sourceReference; return this.raw.sourceReference;
} }
public get available() {
return this.raw.name !== UNKNOWN_SOURCE_LABEL;
}
public get inMemory() { public get inMemory() {
return this.uri.toString().indexOf(`${DEBUG_SCHEME}:`) === 0; return this.uri.toString().indexOf(`${DEBUG_SCHEME}:`) === 0;
} }
......
...@@ -294,7 +294,7 @@ export class DebugService implements debug.IDebugService { ...@@ -294,7 +294,7 @@ export class DebugService implements debug.IDebugService {
thread.fetchCallStack().then(callStack => { thread.fetchCallStack().then(callStack => {
if (callStack.length > 0 && !this.viewModel.focusedStackFrame) { if (callStack.length > 0 && !this.viewModel.focusedStackFrame) {
// focus first stack frame from top that has source location if no other stack frame is focussed // focus first stack frame from top that has source location if no other stack frame is focussed
const stackFrameToFocus = first(callStack, sf => !!sf.source, callStack[0]); const stackFrameToFocus = first(callStack, sf => sf.source && sf.source.available, callStack[0]);
this.focusStackFrameAndEvaluate(stackFrameToFocus).done(null, errors.onUnexpectedError); this.focusStackFrameAndEvaluate(stackFrameToFocus).done(null, errors.onUnexpectedError);
this.windowService.getWindow().focus(); this.windowService.getWindow().focus();
aria.alert(nls.localize('debuggingPaused', "Debugging paused, reason {0}, {1} {2}", event.body.reason, stackFrameToFocus.source ? stackFrameToFocus.source.name : '', stackFrameToFocus.lineNumber)); aria.alert(nls.localize('debuggingPaused', "Debugging paused, reason {0}, {1} {2}", event.body.reason, stackFrameToFocus.source ? stackFrameToFocus.source.name : '', stackFrameToFocus.lineNumber));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册