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.
This commit is contained in:
5
.vscode/launch.json
vendored
5
.vscode/launch.json
vendored
@@ -16,8 +16,9 @@
|
|||||||
"${workspaceRoot}/extensions/ql-vscode/out/**/*.js",
|
"${workspaceRoot}/extensions/ql-vscode/out/**/*.js",
|
||||||
],
|
],
|
||||||
"env": {
|
"env": {
|
||||||
// uncomment to allow debugging the language server Java process from a remote java debugger
|
// change to 'true' debug the IDE or Query servers
|
||||||
// "DEBUG_LANGUAGE_SERVER": "true"
|
"IDE_SERVER_JAVA_DEBUG": "false",
|
||||||
|
"QUERY_SERVER_JAVA_DEBUG": "false",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -907,3 +907,16 @@ async function logStream(stream: Readable, logger: Logger): Promise<void> {
|
|||||||
logger.log(line);
|
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';
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { ideServerLogger } from './logging';
|
|||||||
export async function spawnIdeServer(config: QueryServerConfig): Promise<StreamInfo> {
|
export async function spawnIdeServer(config: QueryServerConfig): Promise<StreamInfo> {
|
||||||
return window.withProgress({ title: 'CodeQL language server', location: ProgressLocation.Window }, async (progressReporter, _) => {
|
return window.withProgress({ title: 'CodeQL language server', location: ProgressLocation.Window }, async (progressReporter, _) => {
|
||||||
const args = ['--check-errors', 'ON_CHANGE'];
|
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');
|
args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=n,quiet=y');
|
||||||
}
|
}
|
||||||
const child = cli.spawnServer(
|
const child = cli.spawnServer(
|
||||||
@@ -28,9 +28,3 @@ export async function spawnIdeServer(config: QueryServerConfig): Promise<StreamI
|
|||||||
return { writer: child.stdin!, reader: child.stdout! };
|
return { writer: child.stdin!, reader: child.stdout! };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldDebug() {
|
|
||||||
return 'DEBUG_LANGUAGE_SERVER' in process.env
|
|
||||||
&& process.env.DEBUG_LANGUAGE_SERVER !== '0'
|
|
||||||
&& process.env.DEBUG_LANGUAGE_SERVER?.toLocaleLowerCase() !== 'false';
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -107,6 +107,11 @@ export class QueryServerClient extends DisposableObject {
|
|||||||
if (this.config.debug) {
|
if (this.config.debug) {
|
||||||
args.push('--debug', '--tuple-counting');
|
args.push('--debug', '--tuple-counting');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cli.shouldDebugQueryServer()) {
|
||||||
|
args.push('-J=-agentlib:jdwp=transport=dt_socket,address=localhost:9010,server=y,suspend=n,quiet=y');
|
||||||
|
}
|
||||||
|
|
||||||
const child = cli.spawnServer(
|
const child = cli.spawnServer(
|
||||||
this.config.codeQlPath,
|
this.config.codeQlPath,
|
||||||
'CodeQL query server',
|
'CodeQL query server',
|
||||||
|
|||||||
Reference in New Issue
Block a user