@codingame/monaco-vscode-debug-service-override 1.83.1 → 1.83.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js +98 -155
- package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +46 -50
- package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +21 -35
- package/vscode/src/vs/workbench/contrib/debug/common/debugModel.js +102 -145
|
@@ -23,7 +23,7 @@ import { autorun } from 'monaco-editor/esm/vs/base/common/observable.js';
|
|
|
23
23
|
import { findLastIdx } from 'monaco-editor/esm/vs/base/common/arraysFind.js';
|
|
24
24
|
|
|
25
25
|
class ExpressionContainer {
|
|
26
|
-
static { this.allValues = (
|
|
26
|
+
static { this.allValues = ( new Map()); }
|
|
27
27
|
static { this.BASE_CHUNK_SIZE = 100; }
|
|
28
28
|
constructor(session, threadId, _reference, id, namedVariables = 0, indexedVariables = 0, memoryReference = undefined, startOfVariables = 0, presentationHint = undefined) {
|
|
29
29
|
this.session = session;
|
|
@@ -87,7 +87,7 @@ class ExpressionContainer {
|
|
|
87
87
|
for (let i = 0; i < numberOfChunks; i++) {
|
|
88
88
|
const start = (this.startOfVariables || 0) + i * chunkSize;
|
|
89
89
|
const count = Math.min(chunkSize, this.indexedVariables - i * chunkSize);
|
|
90
|
-
children.push((
|
|
90
|
+
children.push(( new Variable(
|
|
91
91
|
this.session,
|
|
92
92
|
this.threadId,
|
|
93
93
|
this,
|
|
@@ -103,7 +103,7 @@ class ExpressionContainer {
|
|
|
103
103
|
undefined,
|
|
104
104
|
true,
|
|
105
105
|
start
|
|
106
|
-
)))
|
|
106
|
+
)));
|
|
107
107
|
}
|
|
108
108
|
return children;
|
|
109
109
|
}
|
|
@@ -128,59 +128,40 @@ class ExpressionContainer {
|
|
|
128
128
|
if (!response || !response.body || !response.body.variables) {
|
|
129
129
|
return [];
|
|
130
130
|
}
|
|
131
|
-
const nameCount = (
|
|
132
|
-
const vars = (
|
|
131
|
+
const nameCount = ( new Map());
|
|
132
|
+
const vars = ( response.body.variables.filter(v => !!v).map((v) => {
|
|
133
133
|
if (isString(v.value) && isString(v.name) && typeof v.variablesReference === 'number') {
|
|
134
134
|
const count = nameCount.get(v.name) || 0;
|
|
135
|
-
const idDuplicationIndex = count > 0 ? (
|
|
135
|
+
const idDuplicationIndex = count > 0 ? ( count.toString()) : '';
|
|
136
136
|
nameCount.set(v.name, count + 1);
|
|
137
|
-
return (
|
|
138
|
-
(new Variable(
|
|
139
|
-
this.session,
|
|
140
|
-
this.threadId,
|
|
141
|
-
this,
|
|
142
|
-
v.variablesReference,
|
|
143
|
-
v.name,
|
|
144
|
-
v.evaluateName,
|
|
145
|
-
v.value,
|
|
146
|
-
v.namedVariables,
|
|
147
|
-
v.indexedVariables,
|
|
148
|
-
v.memoryReference,
|
|
149
|
-
v.presentationHint,
|
|
150
|
-
v.type,
|
|
151
|
-
v.__vscodeVariableMenuContext,
|
|
152
|
-
true,
|
|
153
|
-
0,
|
|
154
|
-
idDuplicationIndex
|
|
155
|
-
))
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
return (
|
|
159
|
-
(new Variable(
|
|
137
|
+
return ( new Variable(
|
|
160
138
|
this.session,
|
|
161
139
|
this.threadId,
|
|
162
140
|
this,
|
|
141
|
+
v.variablesReference,
|
|
142
|
+
v.name,
|
|
143
|
+
v.evaluateName,
|
|
144
|
+
v.value,
|
|
145
|
+
v.namedVariables,
|
|
146
|
+
v.indexedVariables,
|
|
147
|
+
v.memoryReference,
|
|
148
|
+
v.presentationHint,
|
|
149
|
+
v.type,
|
|
150
|
+
v.__vscodeVariableMenuContext,
|
|
151
|
+
true,
|
|
163
152
|
0,
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
undefined,
|
|
170
|
-
{ kind: 'virtual' },
|
|
171
|
-
undefined,
|
|
172
|
-
undefined,
|
|
173
|
-
false
|
|
174
|
-
))
|
|
175
|
-
);
|
|
176
|
-
})));
|
|
153
|
+
idDuplicationIndex
|
|
154
|
+
));
|
|
155
|
+
}
|
|
156
|
+
return ( new Variable(this.session, this.threadId, this, 0, '', undefined, ( nls.localize('invalidVariableAttributes', "Invalid variable attributes")), 0, 0, undefined, { kind: 'virtual' }, undefined, undefined, false));
|
|
157
|
+
}));
|
|
177
158
|
if (this.session.autoExpandLazyVariables) {
|
|
178
|
-
await Promise.all((
|
|
159
|
+
await Promise.all(( vars.map(v => v.presentationHint?.lazy && v.evaluateLazy())));
|
|
179
160
|
}
|
|
180
161
|
return vars;
|
|
181
162
|
}
|
|
182
163
|
catch (e) {
|
|
183
|
-
return [(
|
|
164
|
+
return [( new Variable(
|
|
184
165
|
this.session,
|
|
185
166
|
this.threadId,
|
|
186
167
|
this,
|
|
@@ -195,7 +176,7 @@ class ExpressionContainer {
|
|
|
195
176
|
undefined,
|
|
196
177
|
undefined,
|
|
197
178
|
false
|
|
198
|
-
))
|
|
179
|
+
))];
|
|
199
180
|
}
|
|
200
181
|
}
|
|
201
182
|
get getChildrenInChunks() {
|
|
@@ -212,7 +193,7 @@ class ExpressionContainer {
|
|
|
212
193
|
}
|
|
213
194
|
async evaluateExpression(expression, session, stackFrame, context, keepLazyVars = false) {
|
|
214
195
|
if (!session || (!stackFrame && context !== 'repl')) {
|
|
215
|
-
this.value = context === 'repl' ? (
|
|
196
|
+
this.value = context === 'repl' ? ( nls.localize('startDebugFirst', "Please start a debug session to evaluate expressions")) : Expression.DEFAULT_VALUE;
|
|
216
197
|
this.reference = 0;
|
|
217
198
|
return false;
|
|
218
199
|
}
|
|
@@ -251,7 +232,7 @@ function handleSetResponse(expression, response) {
|
|
|
251
232
|
}
|
|
252
233
|
}
|
|
253
234
|
class Expression extends ExpressionContainer {
|
|
254
|
-
static { this.DEFAULT_VALUE = (
|
|
235
|
+
static { this.DEFAULT_VALUE = ( nls.localize('notAvailable', "not available")); }
|
|
255
236
|
constructor(name, id = generateUuid()) {
|
|
256
237
|
super(undefined, undefined, 0, id);
|
|
257
238
|
this.name = name;
|
|
@@ -370,36 +351,32 @@ class StackFrame {
|
|
|
370
351
|
if (!response || !response.body || !response.body.scopes) {
|
|
371
352
|
return [];
|
|
372
353
|
}
|
|
373
|
-
const usedIds = (
|
|
374
|
-
return (
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
);
|
|
393
|
-
}))
|
|
394
|
-
);
|
|
395
|
-
}, err => [( (new ErrorScope(this, 0, err.message)))]);
|
|
354
|
+
const usedIds = ( new Set());
|
|
355
|
+
return ( response.body.scopes.map(rs => {
|
|
356
|
+
let id = 0;
|
|
357
|
+
do {
|
|
358
|
+
id = stringHash(`${rs.name}:${rs.line}:${rs.column}`, id);
|
|
359
|
+
} while (( usedIds.has(id)));
|
|
360
|
+
usedIds.add(id);
|
|
361
|
+
return ( new Scope(
|
|
362
|
+
this,
|
|
363
|
+
id,
|
|
364
|
+
rs.name,
|
|
365
|
+
rs.variablesReference,
|
|
366
|
+
rs.expensive,
|
|
367
|
+
rs.namedVariables,
|
|
368
|
+
rs.indexedVariables,
|
|
369
|
+
rs.line && rs.column && rs.endLine && rs.endColumn ? ( new Range(rs.line, rs.column, rs.endLine, rs.endColumn)) : undefined
|
|
370
|
+
));
|
|
371
|
+
}));
|
|
372
|
+
}, err => [( new ErrorScope(this, 0, err.message))]);
|
|
396
373
|
}
|
|
397
374
|
return this.scopes;
|
|
398
375
|
}
|
|
399
376
|
async getMostSpecificScopes(range) {
|
|
400
377
|
const scopes = await this.getScopes();
|
|
401
378
|
const nonExpensiveScopes = scopes.filter(s => !s.expensive);
|
|
402
|
-
const haveRangeInfo = (
|
|
379
|
+
const haveRangeInfo = ( nonExpensiveScopes.some(s => !!s.range));
|
|
403
380
|
if (!haveRangeInfo) {
|
|
404
381
|
return nonExpensiveScopes;
|
|
405
382
|
}
|
|
@@ -473,15 +450,13 @@ class Thread {
|
|
|
473
450
|
get stateLabel() {
|
|
474
451
|
if (this.stoppedDetails) {
|
|
475
452
|
return this.stoppedDetails.description ||
|
|
476
|
-
(this.stoppedDetails.reason ? (
|
|
453
|
+
(this.stoppedDetails.reason ? ( nls.localize(
|
|
477
454
|
{ key: 'pausedOn', comment: ['indicates reason for program being paused'] },
|
|
478
455
|
"Paused on {0}",
|
|
479
456
|
this.stoppedDetails.reason
|
|
480
|
-
))
|
|
457
|
+
)) : ( nls.localize('paused', "Paused")));
|
|
481
458
|
}
|
|
482
|
-
return (
|
|
483
|
-
(nls.localize({ key: 'running', comment: ['indicates state'] }, "Running"))
|
|
484
|
-
);
|
|
459
|
+
return ( nls.localize({ key: 'running', comment: ['indicates state'] }, "Running"));
|
|
485
460
|
}
|
|
486
461
|
async fetchCallStack(levels = 20) {
|
|
487
462
|
if (this.stopped) {
|
|
@@ -499,7 +474,7 @@ class Thread {
|
|
|
499
474
|
}
|
|
500
475
|
async getCallStackImpl(startFrame, levels) {
|
|
501
476
|
try {
|
|
502
|
-
const tokenSource = (
|
|
477
|
+
const tokenSource = ( new CancellationTokenSource());
|
|
503
478
|
this.callStackCancellationTokens.push(tokenSource);
|
|
504
479
|
const response = await this.session.stackTrace(this.threadId, startFrame, levels, tokenSource.token);
|
|
505
480
|
if (!response || !response.body || tokenSource.token.isCancellationRequested) {
|
|
@@ -508,24 +483,10 @@ class Thread {
|
|
|
508
483
|
if (this.stoppedDetails) {
|
|
509
484
|
this.stoppedDetails.totalFrames = response.body.totalFrames;
|
|
510
485
|
}
|
|
511
|
-
return (
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
(new StackFrame(
|
|
516
|
-
this,
|
|
517
|
-
rsf.id,
|
|
518
|
-
source,
|
|
519
|
-
rsf.name,
|
|
520
|
-
rsf.presentationHint,
|
|
521
|
-
(new Range(rsf.line, rsf.column, rsf.endLine || rsf.line, rsf.endColumn || rsf.column)),
|
|
522
|
-
startFrame + index,
|
|
523
|
-
typeof rsf.canRestart === 'boolean' ? rsf.canRestart : true,
|
|
524
|
-
rsf.instructionPointerReference
|
|
525
|
-
))
|
|
526
|
-
);
|
|
527
|
-
}))
|
|
528
|
-
);
|
|
486
|
+
return ( response.body.stackFrames.map((rsf, index) => {
|
|
487
|
+
const source = this.session.getSource(rsf.source);
|
|
488
|
+
return ( new StackFrame(this, rsf.id, source, rsf.name, rsf.presentationHint, ( new Range(rsf.line, rsf.column, rsf.endLine || rsf.line, rsf.endColumn || rsf.column)), startFrame + index, typeof rsf.canRestart === 'boolean' ? rsf.canRestart : true, rsf.instructionPointerReference));
|
|
489
|
+
}));
|
|
529
490
|
}
|
|
530
491
|
catch (err) {
|
|
531
492
|
if (this.stoppedDetails) {
|
|
@@ -572,21 +533,19 @@ class Thread {
|
|
|
572
533
|
}
|
|
573
534
|
}
|
|
574
535
|
const getUriForDebugMemory = (sessionId, memoryReference, range, displayName = 'memory') => {
|
|
575
|
-
return (
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
}))
|
|
582
|
-
);
|
|
536
|
+
return ( URI.from({
|
|
537
|
+
scheme: DEBUG_MEMORY_SCHEME,
|
|
538
|
+
authority: sessionId,
|
|
539
|
+
path: '/' + encodeURIComponent(memoryReference) + `/${encodeURIComponent(displayName)}.bin`,
|
|
540
|
+
query: range ? `?range=${range.fromOffset}:${range.toOffset}` : undefined,
|
|
541
|
+
}));
|
|
583
542
|
};
|
|
584
543
|
class MemoryRegion extends Disposable {
|
|
585
544
|
constructor(memoryReference, session) {
|
|
586
545
|
super();
|
|
587
546
|
this.memoryReference = memoryReference;
|
|
588
547
|
this.session = session;
|
|
589
|
-
this.invalidateEmitter = this._register((
|
|
548
|
+
this.invalidateEmitter = this._register(( new Emitter()));
|
|
590
549
|
this.onDidInvalidate = this.invalidateEmitter.event;
|
|
591
550
|
this.writable = !!this.session.capabilities.supportsWriteMemoryRequest;
|
|
592
551
|
this._register(session.onDidInvalidateMemory(e => {
|
|
@@ -665,7 +624,7 @@ class BaseBreakpoint extends Enablement {
|
|
|
665
624
|
this.hitCondition = hitCondition;
|
|
666
625
|
this.condition = condition;
|
|
667
626
|
this.logMessage = logMessage;
|
|
668
|
-
this.sessionData = (
|
|
627
|
+
this.sessionData = ( new Map());
|
|
669
628
|
if (enabled === undefined) {
|
|
670
629
|
this.enabled = true;
|
|
671
630
|
}
|
|
@@ -678,7 +637,7 @@ class BaseBreakpoint extends Enablement {
|
|
|
678
637
|
data.sessionId = sessionId;
|
|
679
638
|
this.sessionData.set(sessionId, data);
|
|
680
639
|
}
|
|
681
|
-
const allData = Array.from((
|
|
640
|
+
const allData = Array.from(( this.sessionData.values()));
|
|
682
641
|
const verifiedData = distinct(allData.filter(d => d.verified), d => `${d.line}:${d.column}`);
|
|
683
642
|
if (verifiedData.length) {
|
|
684
643
|
this.data = verifiedData.length === 1 ? verifiedData[0] : undefined;
|
|
@@ -769,12 +728,10 @@ class Breakpoint extends BaseBreakpoint {
|
|
|
769
728
|
}
|
|
770
729
|
get message() {
|
|
771
730
|
if (this.textFileService.isDirty(this.uri)) {
|
|
772
|
-
return (
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
))
|
|
777
|
-
);
|
|
731
|
+
return ( nls.localize(
|
|
732
|
+
'breakpointDirtydHover',
|
|
733
|
+
"Unverified breakpoint. File is modified, please restart debug session."
|
|
734
|
+
));
|
|
778
735
|
}
|
|
779
736
|
return super.message;
|
|
780
737
|
}
|
|
@@ -899,7 +856,7 @@ class ExceptionBreakpoint extends BaseBreakpoint {
|
|
|
899
856
|
this.description = description;
|
|
900
857
|
this.conditionDescription = conditionDescription;
|
|
901
858
|
this.fallback = fallback;
|
|
902
|
-
this.supportedSessions = (
|
|
859
|
+
this.supportedSessions = ( new Set());
|
|
903
860
|
}
|
|
904
861
|
toJSON() {
|
|
905
862
|
const result = Object.create(null);
|
|
@@ -928,7 +885,7 @@ class ExceptionBreakpoint extends BaseBreakpoint {
|
|
|
928
885
|
return true;
|
|
929
886
|
}
|
|
930
887
|
isSupportedSession(sessionId) {
|
|
931
|
-
return sessionId ? (
|
|
888
|
+
return sessionId ? ( this.supportedSessions.has(sessionId)) : this.fallback;
|
|
932
889
|
}
|
|
933
890
|
matches(filter) {
|
|
934
891
|
return this.filter === filter.filter && this.label === filter.label && this.supportsCondition === !!filter.supportsCondition && this.conditionDescription === filter.conditionDescription && this.description === filter.description;
|
|
@@ -976,11 +933,11 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
976
933
|
this.textFileService = textFileService;
|
|
977
934
|
this.uriIdentityService = uriIdentityService;
|
|
978
935
|
this.logService = logService;
|
|
979
|
-
this.schedulers = (
|
|
936
|
+
this.schedulers = ( new Map());
|
|
980
937
|
this.breakpointsActivated = true;
|
|
981
|
-
this._onDidChangeBreakpoints = this._register((
|
|
982
|
-
this._onDidChangeCallStack = this._register((
|
|
983
|
-
this._onDidChangeWatchExpressions = this._register((
|
|
938
|
+
this._onDidChangeBreakpoints = this._register(( new Emitter()));
|
|
939
|
+
this._onDidChangeCallStack = this._register(( new Emitter()));
|
|
940
|
+
this._onDidChangeWatchExpressions = this._register(( new Emitter()));
|
|
984
941
|
this._register(autorun(reader => {
|
|
985
942
|
this.breakpoints = debugStorage.breakpoints.read(reader);
|
|
986
943
|
this.functionBreakpoints = debugStorage.functionBreakpoints.read(reader);
|
|
@@ -1018,7 +975,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1018
975
|
return true;
|
|
1019
976
|
});
|
|
1020
977
|
let i = 1;
|
|
1021
|
-
while ((
|
|
978
|
+
while (( this.sessions.some(s => s.getLabel() === session.getLabel()))) {
|
|
1022
979
|
session.setName(`${session.configuration.name} ${++i}`);
|
|
1023
980
|
}
|
|
1024
981
|
let index = -1;
|
|
@@ -1079,13 +1036,13 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1079
1036
|
refreshTopOfCallstack(thread) {
|
|
1080
1037
|
if (thread.session.capabilities.supportsDelayedStackTraceLoading) {
|
|
1081
1038
|
let topCallStack = Promise.resolve();
|
|
1082
|
-
const wholeCallStack = (
|
|
1039
|
+
const wholeCallStack = ( new Promise((c, e) => {
|
|
1083
1040
|
topCallStack = thread.fetchCallStack(1).then(() => {
|
|
1084
|
-
if (!(
|
|
1085
|
-
const deferred = (
|
|
1041
|
+
if (!( this.schedulers.has(thread.getId()))) {
|
|
1042
|
+
const deferred = ( new DeferredPromise());
|
|
1086
1043
|
this.schedulers.set(thread.getId(), {
|
|
1087
1044
|
completeDeferred: deferred,
|
|
1088
|
-
scheduler: (
|
|
1045
|
+
scheduler: ( new RunOnceScheduler(() => {
|
|
1089
1046
|
thread.fetchCallStack(19).then(() => {
|
|
1090
1047
|
const stale = thread.getStaleCallStack();
|
|
1091
1048
|
const current = thread.getCallStack();
|
|
@@ -1100,7 +1057,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1100
1057
|
deferred.complete();
|
|
1101
1058
|
this.schedulers.delete(thread.getId());
|
|
1102
1059
|
});
|
|
1103
|
-
}, 420))
|
|
1060
|
+
}, 420))
|
|
1104
1061
|
});
|
|
1105
1062
|
}
|
|
1106
1063
|
const entry = this.schedulers.get(thread.getId());
|
|
@@ -1108,7 +1065,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1108
1065
|
entry.completeDeferred.p.then(c, e);
|
|
1109
1066
|
this._onDidChangeCallStack.fire();
|
|
1110
1067
|
});
|
|
1111
|
-
}))
|
|
1068
|
+
}));
|
|
1112
1069
|
return { topCallStack, wholeCallStack };
|
|
1113
1070
|
}
|
|
1114
1071
|
const wholeCallStack = thread.fetchCallStack();
|
|
@@ -1119,10 +1076,10 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1119
1076
|
const uriStr = filter.uri?.toString();
|
|
1120
1077
|
const originalUriStr = filter.originalUri?.toString();
|
|
1121
1078
|
return this.breakpoints.filter(bp => {
|
|
1122
|
-
if (uriStr && (
|
|
1079
|
+
if (uriStr && ( bp.uri.toString()) !== uriStr) {
|
|
1123
1080
|
return false;
|
|
1124
1081
|
}
|
|
1125
|
-
if (originalUriStr && (
|
|
1082
|
+
if (originalUriStr && ( bp.originalUri.toString()) !== originalUriStr) {
|
|
1126
1083
|
return false;
|
|
1127
1084
|
}
|
|
1128
1085
|
if (filter.lineNumber && bp.lineNumber !== filter.lineNumber) {
|
|
@@ -1161,7 +1118,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1161
1118
|
let ebp = this.exceptionBreakpoints.filter((exbp) => exbp.matches(d)).pop();
|
|
1162
1119
|
if (!ebp) {
|
|
1163
1120
|
didChangeBreakpoints = true;
|
|
1164
|
-
ebp = (
|
|
1121
|
+
ebp = ( new ExceptionBreakpoint(
|
|
1165
1122
|
d.filter,
|
|
1166
1123
|
d.label,
|
|
1167
1124
|
!!d.default,
|
|
@@ -1169,7 +1126,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1169
1126
|
undefined ,
|
|
1170
1127
|
d.description,
|
|
1171
1128
|
d.conditionDescription
|
|
1172
|
-
))
|
|
1129
|
+
));
|
|
1173
1130
|
this.exceptionBreakpoints.push(ebp);
|
|
1174
1131
|
}
|
|
1175
1132
|
ebp.setSupportedSession(sessionId, true);
|
|
@@ -1197,7 +1154,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1197
1154
|
this._onDidChangeBreakpoints.fire(undefined);
|
|
1198
1155
|
}
|
|
1199
1156
|
addBreakpoints(uri, rawData, fireEvent = true) {
|
|
1200
|
-
const newBreakpoints = (
|
|
1157
|
+
const newBreakpoints = ( rawData.map(rawBp => ( new Breakpoint(
|
|
1201
1158
|
uri,
|
|
1202
1159
|
rawBp.lineNumber,
|
|
1203
1160
|
rawBp.column,
|
|
@@ -1210,7 +1167,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1210
1167
|
this.uriIdentityService,
|
|
1211
1168
|
this.logService,
|
|
1212
1169
|
rawBp.id
|
|
1213
|
-
))))
|
|
1170
|
+
))));
|
|
1214
1171
|
this.breakpoints = this.breakpoints.concat(newBreakpoints);
|
|
1215
1172
|
this.breakpointsActivated = true;
|
|
1216
1173
|
this.sortAndDeDup();
|
|
@@ -1220,7 +1177,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1220
1177
|
return newBreakpoints;
|
|
1221
1178
|
}
|
|
1222
1179
|
removeBreakpoints(toRemove) {
|
|
1223
|
-
this.breakpoints = this.breakpoints.filter(bp => !(
|
|
1180
|
+
this.breakpoints = this.breakpoints.filter(bp => !( toRemove.some(toRemove => toRemove.getId() === bp.getId())));
|
|
1224
1181
|
this._onDidChangeBreakpoints.fire({ removed: toRemove, sessionOnly: false });
|
|
1225
1182
|
}
|
|
1226
1183
|
updateBreakpoints(data) {
|
|
@@ -1304,7 +1261,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1304
1261
|
}
|
|
1305
1262
|
sortAndDeDup() {
|
|
1306
1263
|
this.breakpoints = this.breakpoints.sort((first, second) => {
|
|
1307
|
-
if ((
|
|
1264
|
+
if (( first.uri.toString()) !== ( second.uri.toString())) {
|
|
1308
1265
|
return resources.basenameOrAuthority(first.uri).localeCompare(resources.basenameOrAuthority(second.uri));
|
|
1309
1266
|
}
|
|
1310
1267
|
if (first.lineNumber === second.lineNumber) {
|
|
@@ -1315,7 +1272,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1315
1272
|
}
|
|
1316
1273
|
return first.lineNumber - second.lineNumber;
|
|
1317
1274
|
});
|
|
1318
|
-
this.breakpoints = distinct(this.breakpoints, bp => `${(
|
|
1275
|
+
this.breakpoints = distinct(this.breakpoints, bp => `${( bp.uri.toString())}:${bp.lineNumber}:${bp.column}`);
|
|
1319
1276
|
}
|
|
1320
1277
|
setEnablement(element, enable) {
|
|
1321
1278
|
if (element instanceof Breakpoint || element instanceof FunctionBreakpoint || element instanceof ExceptionBreakpoint || element instanceof DataBreakpoint || element instanceof InstructionBreakpoint) {
|
|
@@ -1362,7 +1319,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1362
1319
|
this._onDidChangeBreakpoints.fire({ changed: changed, sessionOnly: false });
|
|
1363
1320
|
}
|
|
1364
1321
|
addFunctionBreakpoint(functionName, id) {
|
|
1365
|
-
const newFunctionBreakpoint = (
|
|
1322
|
+
const newFunctionBreakpoint = ( new FunctionBreakpoint(functionName, true, undefined, undefined, undefined, id));
|
|
1366
1323
|
this.functionBreakpoints.push(newFunctionBreakpoint);
|
|
1367
1324
|
this._onDidChangeBreakpoints.fire({ added: [newFunctionBreakpoint], sessionOnly: false });
|
|
1368
1325
|
return newFunctionBreakpoint;
|
|
@@ -1395,7 +1352,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1395
1352
|
this._onDidChangeBreakpoints.fire({ removed, sessionOnly: false });
|
|
1396
1353
|
}
|
|
1397
1354
|
addDataBreakpoint(label, dataId, canPersist, accessTypes, accessType) {
|
|
1398
|
-
const newDataBreakpoint = (
|
|
1355
|
+
const newDataBreakpoint = ( new DataBreakpoint(
|
|
1399
1356
|
label,
|
|
1400
1357
|
dataId,
|
|
1401
1358
|
canPersist,
|
|
@@ -1405,7 +1362,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1405
1362
|
undefined,
|
|
1406
1363
|
accessTypes,
|
|
1407
1364
|
accessType
|
|
1408
|
-
))
|
|
1365
|
+
));
|
|
1409
1366
|
this.dataBreakpoints.push(newDataBreakpoint);
|
|
1410
1367
|
this._onDidChangeBreakpoints.fire({ added: [newDataBreakpoint], sessionOnly: false });
|
|
1411
1368
|
}
|
|
@@ -1422,7 +1379,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1422
1379
|
this._onDidChangeBreakpoints.fire({ removed, sessionOnly: false });
|
|
1423
1380
|
}
|
|
1424
1381
|
addInstructionBreakpoint(instructionReference, offset, address, condition, hitCondition) {
|
|
1425
|
-
const newInstructionBreakpoint = (
|
|
1382
|
+
const newInstructionBreakpoint = ( new InstructionBreakpoint(
|
|
1426
1383
|
instructionReference,
|
|
1427
1384
|
offset,
|
|
1428
1385
|
false,
|
|
@@ -1431,7 +1388,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1431
1388
|
condition,
|
|
1432
1389
|
undefined,
|
|
1433
1390
|
address
|
|
1434
|
-
))
|
|
1391
|
+
));
|
|
1435
1392
|
this.instructionBreakpoints.push(newInstructionBreakpoint);
|
|
1436
1393
|
this._onDidChangeBreakpoints.fire({ added: [newInstructionBreakpoint], sessionOnly: true });
|
|
1437
1394
|
}
|
|
@@ -1456,7 +1413,7 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1456
1413
|
return this.watchExpressions;
|
|
1457
1414
|
}
|
|
1458
1415
|
addWatchExpression(name) {
|
|
1459
|
-
const we = (
|
|
1416
|
+
const we = ( new Expression(name || ''));
|
|
1460
1417
|
this.watchExpressions.push(we);
|
|
1461
1418
|
this._onDidChangeWatchExpressions.fire(we);
|
|
1462
1419
|
return we;
|
|
@@ -1490,10 +1447,10 @@ let DebugModel = class DebugModel extends Disposable {
|
|
|
1490
1447
|
this._onDidChangeCallStack.fire(undefined);
|
|
1491
1448
|
}
|
|
1492
1449
|
};
|
|
1493
|
-
DebugModel = (
|
|
1494
|
-
(
|
|
1495
|
-
(
|
|
1496
|
-
(
|
|
1497
|
-
], DebugModel))
|
|
1450
|
+
DebugModel = ( __decorate([
|
|
1451
|
+
( __param(1, ITextFileService)),
|
|
1452
|
+
( __param(2, IUriIdentityService)),
|
|
1453
|
+
( __param(3, ILogService))
|
|
1454
|
+
], DebugModel));
|
|
1498
1455
|
|
|
1499
1456
|
export { BaseBreakpoint, Breakpoint, DataBreakpoint, DebugModel, Enablement, ErrorScope, ExceptionBreakpoint, Expression, ExpressionContainer, FunctionBreakpoint, InstructionBreakpoint, MemoryRegion, Scope, StackFrame, Thread, ThreadAndSessionIds, Variable, getUriForDebugMemory };
|