stackTrace возвращает 8 доступных, но stackFrames пуст - PullRequest
0 голосов
/ 03 марта 2020

В настоящее время я пытаюсь получить переменные текущего стекового кадра в расширении vscode. Все это происходит внутри vscode с адаптером c ++, предоставляемым microsoft .

. Текущий код выглядит следующим образом:

const session = vscode.debug.activeDebugSession;
if ( session ) {
    await session.customRequest('threads').then(async (threads_response) => {
        let main_thread = {};
        for(let thread of threads_response.threads) {
            if ( thread.name === 'Main Thread') {
                main_thread = thread;
            }
        }

        let stack_frame_format = {
            parameters: true,
            parameterTypes: true,
            parameterNames: true,
            parameterValues: true,
            line: false,
            module: false,
            includeAll: false,
        };

        console.log("main-thread id: " + main_thread.id);

        await session.customRequest('stackTrace', {
            threadId: main_thread.id,
            startFrame: 0,
            levels: 0,
            format: stack_frame_format}).then(async (stackTrace_response) => {
                console.log(stackTrace_response.totalFrames);
                console.log(stackTrace_response.stackFrames);
        });
    });
}

. но stackFrames - это пустой массив. В обычном отладчике (откуда я все это вызываю) я вижу все переменные, их типы и значения.

Мне кажется, что я использую протокол неправильно, но я не знаю, что мне нужно укажите, как получить эти стековые рамки для заполнения.

1 Ответ

0 голосов
/ 03 марта 2020

Хорошо, я просто установил уровень на 100, и он возвращает мне мои восемь кадров. Я предполагаю, что либо документы здесь ошибочны, либо реализация Microsoft, поскольку на их странице документации они говорят

  /**
   * The maximum number of frames to return. If levels is not specified or 0, all frames are returned.
   */
  levels?: number;
...