提问人:Krishna Tamakuwala 提问时间:11/14/2023 更新时间:11/14/2023 访问量:28
VS code API:如何获取在多线程程序中暂停调试器的线程 ID
VS code API: How to get thread id on which debugger is paused in multithread program
问:
我目前正在构建一个 VS 代码扩展来可视化 C# 变量和数据表。我通过按顺序调用这些命令,在单线程应用程序中成功地实现了这一点:
- 线程请求
- StackTrace 请求
- 范围请求
- 变量请求通过 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;
答: 暂无答案
评论