VS code API:如何获取在多线程程序中暂停调试器的线程 ID

VS code API: How to get thread id on which debugger is paused in multithread program

提问人:Krishna Tamakuwala 提问时间:11/14/2023 更新时间:11/14/2023 访问量:28

问:

我目前正在构建一个 VS 代码扩展来可视化 C# 变量和数据表。我通过按顺序调用这些命令,在单线程应用程序中成功地实现了这一点:

  1. 线程请求
  2. StackTrace 请求
  3. 范围请求
  4. 变量请求通过 DAP(调试适配器协议)。
  • 但是我目前在多线程 C# 应用程序中面临问题,因为它返回多个线程,我无法弄清楚我应该在堆栈跟踪请求中传递哪个线程 ID。这是我获取线程和其他请求的代码。
  • 是否可以获取暂停断点的活动线程 ID?还是我必须检查所有线程?以及如何?

这就是我在 javascript 中为单线程 C# 应用程序所做的。

// Get Active Debug Session
const session = vscode.debug.activeDebugSession;

// Get Thread
const threadResponse = await session.customRequest('threads');
const threadId = threadResponse.threads[0].id;

// Get StackFrame
const stackResponse = await session.customRequest('stackTrace', { threadId: threadId, startFrame: 0 });
const frameId = stackResponse.stackFrames[0].id;

// Get Scope
const scopeResponse = await session.customRequest('scopes', { frameId: frameId });
const variableReference = scopeResponse.scopes[0].variablesReference;

// Get Variable
const variableResponse = await session.customRequest('variables', { variablesReference: variableReference });
const variables = variableResponse.variables;
javascript vscode-extensions vscode-debugger vscode-api

评论


答: 暂无答案