API debug.activeDebugSession возвращает неопределенное значение в vscode - PullRequest
0 голосов
/ 22 февраля 2019

У меня проблема при попытке сыграть с 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" с yeoman.
  • заменил extension.js на приведенный выше код.
  • нажал F5 , чтобы запустить (и отладить) расширение.
  • в новом окне открылся простой файл node.jsprogram.
  • нажал F5 для отладки простой программы.
  • нажал F1 , набрал «Hello» и запустил расширение «Hello World».

Но const session = vscode.debug.activeDebugSession; возвращает undefined.

Также vscode.debug.activeDebugConsole.append("Hello from Debug Console"); ничего не показывает.

Я знаю, что , если нет активной отладкисеанс , код сверху не будет работать должным образом.Итак:

Правильно ли активен сеанс отладки?Что я тут не так делаю?

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Я решил проблему, выполнив следующие действия:

  • создайте простое расширение "Hello World" с помощью yeoman.
  • замените extension.js кодом, приведенным выше.
  • нажмите F5 для запуска (и отладки) расширения.
  • в открывшемся новом окне нажмите Меню файлов , затем нажмите ОткрытьПапка и выберите папку, в которой находится простая программа node.js или рабочее место vscode ( это очень важно ).
  • Установите точку останова в какой-то строке ( также важно для оценки поведения теста ).
  • нажмите F5 для отладки простой программы ( thisкак открыть активный сеанс отладки ).
  • нажмите F1 и введите "Hello" и запустите расширение "Hello World".
  • Оцените результаты!!!
0 голосов
/ 22 марта 2019

Мое предложение: вы должны подписаться на vscode.debug.onDidStartDebugSession и vscode.debug.onDidTerminateDebugSession, чтобы отслеживать, когда сеанс начинается / заканчивается или использовать onDidChangeActiveDebugSession, когда меняется .В этот момент вы можете знать, что сеанс активен, и ваш код должен выполняться.

...