如何获取 VS Code 调试数据,如断点、步骤、行代码

Edu*_*ana 6 debugging typescript visual-studio-code vscode-extensions

我正在开发一个学术软件可视化项目,旨在捕获调试会话并以图形方式显示。为此,我尝试创建一个 Visual Studio Code 扩展,在其中可以获得与当前语言调试器交换的数据,例如添加的断点、stepsinto、stepover、调试会话启动、调试文件、上下文变量、调试的行代码。也就是说,与 VS Code 窗口中显示的数据相同:变量、监视、调用堆栈、加载的脚本和断点。

我尝试使用调试适配器(DAP - 调试适配器协议)创建一个添加新调试器提供程序的扩展。但是,这会取消当前提供程序并且不允许调试。 https://code.visualstudio.com/api/extension-guides/debugger-extension

我还尝试使用VS Code API事件。通过这些事件,我设法控制会话的开始和一些断点数据,但不完整。 https://code.visualstudio.com/api/references/vscode-api#debug

有人知道如何在 VS Code 范围(VS Code 通用调试器 UI)中捕获此调试数据,也就是说,无论使用什么语言?VS Code 的 GitHub 中是否有任何未解决的问题?

Tra*_*s3r 8

此问题的解决方案称为DebugAdapterTracker.

vscode.debug.registerDebugAdapterTrackerFactory('*', {
  createDebugAdapterTracker(session: DebugSession) {
    return {
      onWillReceiveMessage: m => console.log(`> ${JSON.stringify(m, undefined, 2)}`),
      onDidSendMessage: m => console.log(`< ${JSON.stringify(m, undefined, 2)}`)
    };
  }
});
Run Code Online (Sandbox Code Playgroud)

https://code.visualstudio.com/updates/v1_30#_extension-authoring

查找“最终的调试适配器跟踪器 API”。它最初是为 Live Share 调试而创建的。