mirror of
https://github.com/Microsoft/vscode
synced 2024-10-30 11:10:48 +00:00
debug: log adapter crashes to adapter telemtry buckets as well
This commit is contained in:
parent
77612d1f1e
commit
49cc9aed3d
2 changed files with 17 additions and 19 deletions
|
@ -5,7 +5,6 @@
|
|||
|
||||
import nls = require('vs/nls');
|
||||
import lifecycle = require('vs/base/common/lifecycle');
|
||||
import Objects = require('vs/base/common/objects');
|
||||
import mime = require('vs/base/common/mime');
|
||||
import ee = require('vs/base/common/eventEmitter');
|
||||
import uri from 'vs/base/common/uri';
|
||||
|
@ -72,7 +71,6 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
|
|||
private lastTaskEvent: TaskEvent;
|
||||
private toDispose: lifecycle.IDisposable[];
|
||||
private inDebugMode: IKeybindingContextKey<boolean>;
|
||||
private telemetryInfo: any;
|
||||
|
||||
constructor(
|
||||
@IStorageService private storageService: IStorageService,
|
||||
|
@ -113,12 +111,6 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
|
|||
this.viewModel = new viewmodel.ViewModel();
|
||||
|
||||
this.registerListeners(eventService, lifecycleService);
|
||||
|
||||
this.telemetryInfo = Object.create(null);
|
||||
this.telemetryService.getTelemetryInfo().then(info => {
|
||||
this.telemetryInfo['common.vscodemachineid'] = info.machineId;
|
||||
this.telemetryInfo['common.vscodesessionid'] = info.sessionId;
|
||||
});
|
||||
}
|
||||
|
||||
private registerListeners(eventService: IEventService, lifecycleService: ILifecycleService): void {
|
||||
|
@ -287,7 +279,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
|
|||
this.toDispose.push(this.session.addListener2(debug.SessionEvents.DEBUGEE_TERMINATED, (event: DebugProtocol.TerminatedEvent) => {
|
||||
aria.alert(nls.localize('programTerminated', "Program terminated."));
|
||||
if (this.session && this.session.getId() === (<any>event).sessionId) {
|
||||
if (event.body && typeof event.body.restart == 'boolean' && event.body.restart) {
|
||||
if (event.body && typeof event.body.restart === 'boolean' && event.body.restart) {
|
||||
this.restartSession().done(null, errors.onUnexpectedError);
|
||||
} else {
|
||||
this.session.disconnect().done(null, errors.onUnexpectedError);
|
||||
|
@ -297,14 +289,9 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
|
|||
|
||||
this.toDispose.push(this.session.addListener2(debug.SessionEvents.OUTPUT, (event: DebugProtocol.OutputEvent) => {
|
||||
if (event.body && event.body.category === 'telemetry') {
|
||||
const key = this.configurationManager.getAdapter().aiKey;
|
||||
// only log telemetry events from debug adapter if the adapter provided the telemetry key
|
||||
if (key) {
|
||||
if (!this.telemetryAdapter) {
|
||||
this.telemetryAdapter = new AIAdapter(key, this.session.getType());
|
||||
}
|
||||
let data = Objects.mixin(event.body.data, this.telemetryInfo);
|
||||
this.telemetryAdapter.log(event.body.output, data);
|
||||
if (this.telemetryAdapter) {
|
||||
this.telemetryAdapter.log(event.body.output, event.body.data);
|
||||
}
|
||||
} else if (event.body && typeof event.body.output === 'string' && event.body.output.length > 0) {
|
||||
this.onOutput(event);
|
||||
|
@ -567,7 +554,15 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
|
|||
}
|
||||
|
||||
private doCreateSession(configuration: debug.IConfig, openViewlet: boolean): TPromise<any> {
|
||||
this.session = new session.RawDebugSession(this.messageService, this.telemetryService, configuration.debugServer, this.configurationManager.getAdapter());
|
||||
const key = this.configurationManager.getAdapter().aiKey;
|
||||
const telemetryInfo = Object.create(null);
|
||||
this.telemetryService.getTelemetryInfo().then(info => {
|
||||
telemetryInfo['common.vscodemachineid'] = info.machineId;
|
||||
telemetryInfo['common.vscodesessionid'] = info.sessionId;
|
||||
}, errors.onUnexpectedError);
|
||||
this.telemetryAdapter = new AIAdapter(key, this.configurationManager.getAdapter().type, null, telemetryInfo);
|
||||
this.session = new session.RawDebugSession(this.messageService, this.telemetryService, configuration.debugServer, this.configurationManager.getAdapter(), this.telemetryAdapter);
|
||||
|
||||
this.registerSessionListeners();
|
||||
|
||||
return this.session.initialize({
|
||||
|
|
|
@ -11,6 +11,7 @@ import platform = require('vs/base/common/platform');
|
|||
import errors = require('vs/base/common/errors');
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import severity from 'vs/base/common/severity';
|
||||
import { AIAdapter } from 'vs/base/node/aiAdapter';
|
||||
import debug = require('vs/workbench/parts/debug/common/debug');
|
||||
import { Adapter } from 'vs/workbench/parts/debug/node/debugAdapter';
|
||||
import v8 = require('vs/workbench/parts/debug/node/v8Protocol');
|
||||
|
@ -31,7 +32,8 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
|
|||
private messageService: IMessageService,
|
||||
private telemetryService: ITelemetryService,
|
||||
private debugServerPort: number,
|
||||
private adapter: Adapter
|
||||
private adapter: Adapter,
|
||||
private telemtryAdapter: AIAdapter
|
||||
) {
|
||||
super();
|
||||
this.capabilities = {};
|
||||
|
@ -59,7 +61,8 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
|
|||
const error = errorResponse.body ? errorResponse.body.error : null;
|
||||
const message = error ? debug.formatPII(error.format, false, error.variables) : errorResponse.message;
|
||||
if (error && error.sendTelemetry) {
|
||||
this.telemetryService.publicLog('debugProtocolErrorResponse', { error : message });
|
||||
this.telemetryService.publicLog('debugProtocolErrorResponse', { error: message });
|
||||
this.telemtryAdapter.log('debugProtocolErrorResponse', { error: message });
|
||||
}
|
||||
|
||||
return TPromise.wrapError(new Error(message));
|
||||
|
|
Loading…
Reference in a new issue