Skip to content

Commit 5a1452e

Browse files
authored
✨ send terminated event if debugee ends abruptly (#802)
Fixes #803
1 parent 6d18b69 commit 5a1452e

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/client/debugger/mainV2.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ if ((Reflect as any).metadata === undefined) {
1212
import { Socket } from 'net';
1313
import * as path from 'path';
1414
import { PassThrough } from 'stream';
15-
import { DebugSession, ErrorDestination, logger, OutputEvent } from 'vscode-debugadapter';
15+
import { DebugSession, ErrorDestination, logger, OutputEvent, TerminatedEvent } from 'vscode-debugadapter';
1616
import { LogLevel } from 'vscode-debugadapter/lib/logger';
1717
import { Event } from 'vscode-debugadapter/lib/messages';
1818
import { DebugProtocol } from 'vscode-debugprotocol';
@@ -78,12 +78,18 @@ export class PythonDebugger extends DebugSession {
7878
// Lets start our debugger.
7979
const session = new PythonDebugger(serviceContainer, isServerMode);
8080
session.setRunAsServer(isServerMode);
81-
81+
let terminatedEventSent = false;
8282
function dispose() {
83+
if (!terminatedEventSent) {
84+
protocolMessageWriter.write(process.stdout, new TerminatedEvent());
85+
terminatedEventSent = true;
86+
}
8387
session.shutdown();
8488
}
85-
outputProtocolParser.once('event_terminated', dispose);
86-
outputProtocolParser.once('response_disconnect', dispose);
89+
outputProtocolParser.once('event_terminated', () => {
90+
terminatedEventSent = true;
91+
dispose();
92+
});
8793
if (!isServerMode) {
8894
process.on('SIGTERM', dispose);
8995
}
@@ -99,6 +105,7 @@ export class PythonDebugger extends DebugSession {
99105

100106
outputProtocolParser.on('response_launch', async () => {
101107
const debuggerSocket = await session.debugServer!.client;
108+
debuggerSocket.on('end', dispose);
102109
const debugSoketProtocolParser = serviceContainer.get<IProtocolParser>(IProtocolParser);
103110
debugSoketProtocolParser.connect(debuggerSocket);
104111

0 commit comments

Comments
 (0)