debug.activeDebugSession API returns vscode 未定义
debug.activeDebugSession API returns undefined on vscode
我在尝试使用 vscode
的 debug api
时遇到问题。这是我正在使用的代码:
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
}
为了尝试这个,我做了以下步骤:
- 使用 yeoman 创建了简单的
"Hello World"
扩展。
- 用上面的代码替换了
extension.js
。
- 按下 F5 启动(和调试)扩展。
- 在新 window 中打开了一个简单的 node.js 程序。
- 按 F5 调试简单程序。
- 按下 F1 并键入 "Hello" 和 运行 "Hello World" 扩展名。
但是const session = vscode.debug.activeDebugSession;
returnsundefined
.
另外 vscode.debug.activeDebugConsole.append("Hello from Debug Console");
不显示任何内容。
我知道如果没有活动的调试会话,上面的代码将无法正常工作。所以:
我的调试会话是否正确?我在这里做错了什么?
我的建议:您必须订阅 vscode.debug.onDidStartDebugSession
和 vscode.debug.onDidTerminateDebugSession
以跟踪会话何时 starts/ends 或使用 onDidChangeActiveDebugSession
当 改变 时。此时,您可以知道会话处于活动状态,并且您的代码应该 运行.
我已经按照以下步骤解决了这个问题:
- 使用 yeoman 创建一个简单的
"Hello World"
扩展。
- 用上面的代码替换
extension.js
。
- 按 F5 启动(和调试)扩展。
- 在新 window 打开中,点击 文件菜单 ,然后点击 打开文件夹 ,然后 select 一个文件夹,其中是一个简单的 node.js 程序 或 vscode 工作场所 ( 这非常重要).
- 在某行设置断点(对于理解测试的行为也很重要)。
- 按 F5 调试简单程序(这是打开活动调试会话的方法)。
- 按 F1 并键入 "Hello" 和 运行 "Hello World" 扩展名。
- 感谢结果!!!
我在尝试使用 vscode
的 debug api
时遇到问题。这是我正在使用的代码:
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
}
为了尝试这个,我做了以下步骤:
- 使用 yeoman 创建了简单的
"Hello World"
扩展。 - 用上面的代码替换了
extension.js
。 - 按下 F5 启动(和调试)扩展。
- 在新 window 中打开了一个简单的 node.js 程序。
- 按 F5 调试简单程序。
- 按下 F1 并键入 "Hello" 和 运行 "Hello World" 扩展名。
但是const session = vscode.debug.activeDebugSession;
returnsundefined
.
另外 vscode.debug.activeDebugConsole.append("Hello from Debug Console");
不显示任何内容。
我知道如果没有活动的调试会话,上面的代码将无法正常工作。所以:
我的调试会话是否正确?我在这里做错了什么?
我的建议:您必须订阅 vscode.debug.onDidStartDebugSession
和 vscode.debug.onDidTerminateDebugSession
以跟踪会话何时 starts/ends 或使用 onDidChangeActiveDebugSession
当 改变 时。此时,您可以知道会话处于活动状态,并且您的代码应该 运行.
我已经按照以下步骤解决了这个问题:
- 使用 yeoman 创建一个简单的
"Hello World"
扩展。 - 用上面的代码替换
extension.js
。 - 按 F5 启动(和调试)扩展。
- 在新 window 打开中,点击 文件菜单 ,然后点击 打开文件夹 ,然后 select 一个文件夹,其中是一个简单的 node.js 程序 或 vscode 工作场所 ( 这非常重要).
- 在某行设置断点(对于理解测试的行为也很重要)。
- 按 F5 调试简单程序(这是打开活动调试会话的方法)。
- 按 F1 并键入 "Hello" 和 运行 "Hello World" 扩展名。
- 感谢结果!!!