当我尝试使用debug api
的vscode
时,我有一个问题。这是我正在使用的代码:
const vscode = require('vscode');
function activate(context) {
console.log('Congratulations, your extension "helloworld" is now active!');
let disposable = vscode.commands.registerCommand('extension.helloWorld', function () {
// Display a message box to the user
vscode.window.showInformationMessage('Hello World!'); // This works
const session = vscode.debug.activeDebugSession;
console.log(session); // returns undefined
// I have tried this one, and no text is shown
vscode.debug.activeDebugConsole.append("Hello from Debug Console");
if (session) {
session.customRequest("evaluate", {
"expression": "Math.sqrt(10)"
}).then(reply => {
vscode.window.showInformationMessage(`result: ${reply.result}`);
}, error => {
vscode.window.showInformationMessage(`error: ${error.message}`);
});
}
});
context.subscriptions.push(disposable);
}
exports.activate = activate;
function deactivate() {}
module.exports = {
activate,
deactivate
}
为了尝试这个,我做了以下步骤:
"Hello World"
扩展。extension.js
。但const session = vscode.debug.activeDebugSession;
回归undefined
。
vscode.debug.activeDebugConsole.append("Hello from Debug Console");
也没有显示任何内容。
我知道如果没有活动的调试会话,上面的代码将无法正常工作。所以:
我是否正确拥有活动的调试会话?我在这里做错了什么?
我的建议:您必须订阅vscode.debug.onDidStartDebugSession
和vscode.debug.onDidTerminateDebugSession
以跟踪会话开始/结束的时间或更改时使用onDidChangeActiveDebugSession
。此时,您可以知道会话处于活动状态,并且您的代码应该运行。
我已按照以下步骤解决了问题:
"Hello World"
扩展。extension.js
。