Skip to content

Commit 648bf4b

Browse files
authored
Add a debug flag to allow remote debugging (#524)
With this flag on, it is possible to remote-debug the language server in a java debugger.
1 parent 8ccb7c4 commit 648bf4b

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

.vscode/launch.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@
1515
"outFiles": [
1616
"${workspaceRoot}/extensions/ql-vscode/out/**/*.js",
1717
],
18-
"preLaunchTask": "Build"
18+
"preLaunchTask": "Build",
19+
"env": {
20+
// uncomment to allow debugging the language server Java process from a remote java debugger
21+
// "DEBUG_LANGUAGE_SERVER": "true"
22+
}
1923
},
2024
{
2125
"name": "Launch Unit Tests (vscode-codeql)",

extensions/ql-vscode/src/ide-server.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@ import { ideServerLogger } from './logging';
1111
/** Starts a new CodeQL language server process, sending progress messages to the status bar. */
1212
export async function spawnIdeServer(config: QueryServerConfig): Promise<StreamInfo> {
1313
return window.withProgress({ title: 'CodeQL language server', location: ProgressLocation.Window }, async (progressReporter, _) => {
14+
const args = ['--check-errors', 'ON_CHANGE'];
15+
if (shouldDebug()) {
16+
args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=n,quiet=y');
17+
}
1418
const child = cli.spawnServer(
1519
config.codeQlPath,
1620
'CodeQL language server',
1721
['execute', 'language-server'],
18-
['--check-errors', 'ON_CHANGE'],
22+
args,
1923
ideServerLogger,
2024
data => ideServerLogger.log(data.toString(), { trailingNewline: false }),
2125
data => ideServerLogger.log(data.toString(), { trailingNewline: false }),
@@ -24,3 +28,9 @@ export async function spawnIdeServer(config: QueryServerConfig): Promise<StreamI
2428
return { writer: child.stdin!, reader: child.stdout! };
2529
});
2630
}
31+
32+
function shouldDebug() {
33+
return 'DEBUG_LANGUAGE_SERVER' in process.env
34+
&& process.env.DEBUG_LANGUAGE_SERVER !== '0'
35+
&& process.env.DEBUG_LANGUAGE_SERVER?.toLocaleLowerCase() !== 'false';
36+
}

0 commit comments

Comments
 (0)