VS Code: How to access debug variables from within extension?

北慕城南 提交于 2019-12-03 21:27:01

I have managed to get access to the local variables although this is not a general solution - it may only work in a single threaded debugger. If you know any better way, please answer or comment.

Say, the debugger breaks in a method that has a local variable car.

To get the value of car, I am using the customRequest method on the active debug session:

const session = vscode.debug.activeDebugSession;
const response = await session.customRequest('evaluate', { expression: 'car', frameId: frameId });
const car = response.result;

To get the frameId, I use another call of customRequest:

const session = vscode.debug.activeDebugSession;
const response = await session.customRequest('stackTrace', { threadId: 1 })
const frameId = response.stackFrames[0].id;

To get a real car object (not a string representation) in my extension, I pass "JSON.stringify(car)" as expression in the evaluate customRequest. Then, I can use JSON.parse(response.result).

To get all scopes, stacks and variables, have a look at the Debug Session API and the specification of the DebugProtocol.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!