From 52e25c397ecff24b226dc4b327422ba0a56fa1fd Mon Sep 17 00:00:00 2001 From: Brian Ignacio Date: Mon, 20 May 2024 19:21:25 +0800 Subject: [PATCH] listen to disconnect with restart event keep openocd running --- src/extension.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index a726cc5cc..6438abd71 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -159,6 +159,7 @@ let statusBarItems: { [key: string]: vscode.StatusBarItem }; const openOCDManager = OpenOCDManager.init(); let isOpenOCDLaunchedByDebug: boolean = false; +let isDebugRestarted: boolean = false; let debugAdapterManager: DebugAdapterManager; let isMonitorLaunchedByDebug: boolean = false; @@ -415,7 +416,7 @@ export async function activate(context: vscode.ExtensionContext) { }); vscode.debug.onDidTerminateDebugSession((e) => { - if (isOpenOCDLaunchedByDebug) { + if (isOpenOCDLaunchedByDebug && !isDebugRestarted) { isOpenOCDLaunchedByDebug = false; openOCDManager.stop(); } @@ -1415,6 +1416,7 @@ export async function activate(context: vscode.ExtensionContext) { ) { isOpenOCDLaunchedByDebug = true; } + isDebugRestarted = false; }); vscode.debug.registerDebugAdapterTrackerFactory("gdbtarget", { @@ -1428,6 +1430,17 @@ export async function activate(context: vscode.ExtensionContext) { } peripheralTreeProvider.refresh(); } + + if ( + m && + m.type === "event" && + m.event === "output" && + m.body.output.indexOf( + `From client: disconnect({"restart":true})` + ) !== -1 + ) { + isDebugRestarted = true; + } }, }; },