You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio调试器扩展:解决切换栈后的调用栈显示问题

自定义协程场景下VS调试器的栈遍历扩展方案需求

关联问题

  • 《替换应用程序的调用栈》
  • 《为Visual Studio调试器提供自定义代码的符号支持》

背景概述

我实现了自定义Native代码生成逻辑,采用自定义可执行格式(无PDB文件),已基于Concord库开发Visual Studio调试器扩展,完成了自定义符号解析功能。

代码中包含类Fiber的简化栈协程实现,进入协程时会切换RSP寄存器,导致调试器无法展示完整调用栈——当前仅能显示协程内部的栈帧,丢失了触发协程的C++调用站点。

已尝试方案及问题

由于所有协程最终都会返回原调用站点,我尝试扩展调试器以合并调用栈实现完整展示,但遇到了以下问题:

  • 通过IDkmCallStackFilter接口实现了部分功能,但仅能展示单个帧,且寄存器信息错误
  • 尝试IDkmStackProvider、IDkmSymbolStackWalker等接口,未达到预期效果
  • IDkmMonitorStackWalk仅针对外部DLL触发,不适用当前场景
  • 手动栈遍历未找到指定自定义返回地址和寄存器的有效方法
  • DkmAsyncStackWalkContext因无任务/线程场景,不知如何正确使用

核心需求

寻求在Visual Studio调试器框架中,从提取的oldRSP值(非当前线程栈区域)触发完整栈遍历的可行方案。


内容的提问来源于stack exchange,提问作者Juliean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:07:21