From a7bf5e60f373626232f287057b49706c61c9c95d Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Wed, 18 Nov 2020 08:34:51 -0800 Subject: [PATCH] Add debug flag for query server And separate flag for IDE server. Setting these flags to `true` will start the respective Java processes in debug mode so that they can be attached to a debugger. --- .vscode/launch.json | 5 +++-- extensions/ql-vscode/src/cli.ts | 13 +++++++++++++ extensions/ql-vscode/src/ide-server.ts | 8 +------- extensions/ql-vscode/src/queryserver-client.ts | 5 +++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 8e49319c8..edea01170 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -16,8 +16,9 @@ "${workspaceRoot}/extensions/ql-vscode/out/**/*.js", ], "env": { - // uncomment to allow debugging the language server Java process from a remote java debugger - // "DEBUG_LANGUAGE_SERVER": "true" + // change to 'true' debug the IDE or Query servers + "IDE_SERVER_JAVA_DEBUG": "false", + "QUERY_SERVER_JAVA_DEBUG": "false", } }, { diff --git a/extensions/ql-vscode/src/cli.ts b/extensions/ql-vscode/src/cli.ts index 153574384..25c3fa606 100644 --- a/extensions/ql-vscode/src/cli.ts +++ b/extensions/ql-vscode/src/cli.ts @@ -907,3 +907,16 @@ async function logStream(stream: Readable, logger: Logger): Promise { logger.log(line); } } + + +export function shouldDebugIdeServer() { + return 'IDE_SERVER_JAVA_DEBUG' in process.env + && process.env.IDE_SERVER_JAVA_DEBUG !== '0' + && process.env.IDE_SERVER_JAVA_DEBUG?.toLocaleLowerCase() !== 'false'; +} + +export function shouldDebugQueryServer() { + return 'QUERY_SERVER_JAVA_DEBUG' in process.env + && process.env.QUERY_SERVER_JAVA_DEBUG !== '0' + && process.env.QUERY_SERVER_JAVA_DEBUG?.toLocaleLowerCase() !== 'false'; +} diff --git a/extensions/ql-vscode/src/ide-server.ts b/extensions/ql-vscode/src/ide-server.ts index 2f8ba2808..c148e6f7e 100644 --- a/extensions/ql-vscode/src/ide-server.ts +++ b/extensions/ql-vscode/src/ide-server.ts @@ -12,7 +12,7 @@ import { ideServerLogger } from './logging'; export async function spawnIdeServer(config: QueryServerConfig): Promise { return window.withProgress({ title: 'CodeQL language server', location: ProgressLocation.Window }, async (progressReporter, _) => { const args = ['--check-errors', 'ON_CHANGE']; - if (shouldDebug()) { + if (cli.shouldDebugIdeServer()) { args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=n,quiet=y'); } const child = cli.spawnServer( @@ -28,9 +28,3 @@ export async function spawnIdeServer(config: QueryServerConfig): Promise