Я использую API отладки VSCode из расширения.Моя цель - прочитать регистры процессора для программы C ++ из отладчика gdb / lldb во время сеанса отладки.У меня также есть похожие запросы на другие вещи (чтение памяти, разборка и т. Д.), Которые текущие отладчики не предоставляют
У меня есть следующее в моем расширении ... Я могу предоставить полный тестовый пример, если это необходимо.Да, я знаю, что здесь есть ошибка, заключающаяся в том, что после первого ожидания сеанс может перестать быть активным, и у меня не отображается полная проверка ошибок.
static async getRegisters() {
const session = vscode.debug.activeDebugSession;
if (session && text) { // Make sure we still have a session
// The following gets me the right result
const sTrace = await session.customRequest('stackTrace', { threadId: 1 });
const frameId = sTrace.stackFrames[0].id;
// The following does execute but the results are printed to debug console
// rather than returning the result
// I tried many variations of arguments and contexts types
const text = '-exec -data-list-register-names';
const arg : DebugProtocol.EvaluateArguments = {expression: text, frameId: frameId, context:'hover'};
session.customRequest('evaluate', arg).then((response) => {
console.log(response.result);
});
}
}
Мне как-то нужны результаты gdbпредоставлено обратно в мое расширение.Вместо этого результаты выводятся на консоль отладки, и я получаю пустую строку.Я также попытался настроить обработчик событий vscode.debug.onDidReceiveDebugSessionCustomEvent
для пользовательских команд, но ничего не запускается.Есть ли лучший способ?
Возможно, первый аргумент customRequest
не должен быть 'evaluate'
, но я не вижу ничего другого в спецификации DebugProtocol. для отправки пользовательской командык фактическому отладчику.