@@ -12,7 +12,7 @@ if ((Reflect as any).metadata === undefined) {
12
12
import { Socket } from 'net' ;
13
13
import * as path from 'path' ;
14
14
import { PassThrough } from 'stream' ;
15
- import { DebugSession , ErrorDestination , logger , OutputEvent } from 'vscode-debugadapter' ;
15
+ import { DebugSession , ErrorDestination , logger , OutputEvent , TerminatedEvent } from 'vscode-debugadapter' ;
16
16
import { LogLevel } from 'vscode-debugadapter/lib/logger' ;
17
17
import { Event } from 'vscode-debugadapter/lib/messages' ;
18
18
import { DebugProtocol } from 'vscode-debugprotocol' ;
@@ -78,12 +78,18 @@ export class PythonDebugger extends DebugSession {
78
78
// Lets start our debugger.
79
79
const session = new PythonDebugger ( serviceContainer , isServerMode ) ;
80
80
session . setRunAsServer ( isServerMode ) ;
81
-
81
+ let terminatedEventSent = false ;
82
82
function dispose ( ) {
83
+ if ( ! terminatedEventSent ) {
84
+ protocolMessageWriter . write ( process . stdout , new TerminatedEvent ( ) ) ;
85
+ terminatedEventSent = true ;
86
+ }
83
87
session . shutdown ( ) ;
84
88
}
85
- outputProtocolParser . once ( 'event_terminated' , dispose ) ;
86
- outputProtocolParser . once ( 'response_disconnect' , dispose ) ;
89
+ outputProtocolParser . once ( 'event_terminated' , ( ) => {
90
+ terminatedEventSent = true ;
91
+ dispose ( ) ;
92
+ } ) ;
87
93
if ( ! isServerMode ) {
88
94
process . on ( 'SIGTERM' , dispose ) ;
89
95
}
@@ -99,6 +105,7 @@ export class PythonDebugger extends DebugSession {
99
105
100
106
outputProtocolParser . on ( 'response_launch' , async ( ) => {
101
107
const debuggerSocket = await session . debugServer ! . client ;
108
+ debuggerSocket . on ( 'end' , dispose ) ;
102
109
const debugSoketProtocolParser = serviceContainer . get < IProtocolParser > ( IProtocolParser ) ;
103
110
debugSoketProtocolParser . connect ( debuggerSocket ) ;
104
111
0 commit comments