Token导航 LogoToken导航TokenDH.com
MCP Win Debugger logo
开发工具未说明官方级别未说明来源级核验

MCP Win Debugger

MCP Server

一个通过CDB(Console Debugger)为AI代理提供原生Windows调试功能的MCP服务器,支持实时断点设置、内存检查和代码步进,无需重新编译。

工具数

39

提示词数

0

GitHub Stars

4

资源数

0
调试工具PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

RandyGaul

提供方

RandyGaul

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

mcp-win调试器

一个MCP服务器,通过CDB(控制台调试器)为AI代理提供本机Windows调试能力。

问题

本机代码的默认调试循环非常缓慢:

add print statement → recompile → relaunch → reproduce bug → close app → read logs → repeat

每次迭代需要几分钟。对于大型C++项目,一次重新编译可能需要10多分钟。

解决方案

此MCP服务器允许AI代理 直接调试您的流程 --设置断点、检查内存、读取变量、遍历代码,甚至在运行时修改状态。无需重新编译。

attach to process → set breakpoint → inspect callstack → read locals → follow pointers → find bug

每次操作都需要 毫秒。代理程序会像在Visual Studio中一样导航程序的实时状态,但由AI驱动,AI可以将源代码与它在内存中看到的内容进行交叉引用。

示例:代理发现一个Off By One Bug

考虑一下这段带有微妙错误的C代码-- get_last_player 回报 &players[count] 而不是 &players[count-1]:

typedef struct {
    Player* players;
    int count;
    int capacity;
} GameState;

// BUG: off-by-one — accesses players[count] instead of players[count-1]
Player* get_last_player(GameState* game) {
    return &game->players[game->count];  // should be count - 1
}

void apply_poison(GameState* game) {
    Player* last = get_last_player(game);  // reads garbage when count == 0
    damage_player(last, 5);
}

代理启动程序,设置断点,并调查:

#代理操作MCP工具代理看到的内容结论
1使用符号启动launch进程在0.25秒内启动准备调试
2仅加载我们的PDBload_symbols_forcrashme!main, crashme!get_last_player 找到符号加载时间为0.01秒
3可疑功能中断set_breakpointbp crashme!get_last_player --已解决断点集
4运行程序go断点立即命中从调用 main+0x8b
5、这是谁说的?callstackget_last_playermain__scrt_common_main_seh来自主电话的正常呼叫
6游戏状态如何?display_typecount: 3, capacity: 4, players: 0x1d7...有3名玩家,看起来还可以
7它返回什么?step_out + localslast = 0x00000000'00000000 (NULL!)返回错误指针!
8继续拨打第二个电话go击中BP apply_poison第二呼叫站点
9进入,检查step_into + evaluategame->count = 0漏洞: &players[0] 空游戏=未初始化内存

在约1秒的调试时间内找到根本原因。 无打印声明。无需重新编译。代理读取源代码,设置目标断点,并跟踪数据直到出现错误——与Visual Studio中的方式相同,但不需要手动单击。

快速开始

先决条件

没有第三方依赖关系——服务器只使用Python标准库。

安装

git clone https://github.com/RandyGaul/mcp-win-debugger.git

配置Claude代码

添加到您的项目 .mcp.json (如果它不存在,请在项目根目录中创建它):

{
  "mcpServers": {
    "windbg": {
      "command": "python",
      "args": ["C:/path/to/mcp-win-debugger/src/server.py"]
    }
  }
}

替换 C:/path/to/mcp-win-debugger 使用克隆仓库的实际路径。

用法

告诉Claude调试你的程序:

“发射 D:/build/myapp.exe 符号来自 D:/build/ 并调查玩家健康状况变差的原因”

代理人将:

  1. 在调试器下启动可执行文件
  2. 仅加载您的符号(快速-跳过所有依赖PDB)
  3. 在相关函数上设置断点
  4. 运行程序,检查断点处的状态
  5. 跟随指针链,读取结构体,检查数组边界
  6. 找出根本原因

工具(39)

会话管理

工具说明
launch在调试器下启动可执行文件
attach通过PID附加到正在运行的进程
open_dump打开碰撞转储(.dmp)进行尸检分析
detach结束调试会话

执行控制

工具说明
go继续执行(F5)
step_into进入下一个指令(F11)
step_over跳过下一条指令(F10)
step_out退出当前功能(Shift+F11)
break_execution进入正在运行的进程(Ctrl+Break)

断点

工具说明
set_breakpoint在函数或地址上设置代码断点
set_data_breakpoint在内存地址上设置硬件监视点
list_breakpoints列出所有断点
delete_breakpoint按ID删除断点
enable_breakpoint启用已禁用的断点
disable_breakpoint禁用而不删除

检查

工具说明
callstack获取调用堆栈(当前线程或所有线程)
locals显示当前作用域中的局部变量
evaluate计算C++表达式
display_type显示结构/类布局或实例
display_type_recursive递归展开嵌套结构
read_memory读取原始内存(字节、字、qwords、ascii)
dereference_pointer跟随指针并显示目标
inspect_object显示C++对象的vtable+字段

修改

工具说明
write_memory将值写入内存
set_variable设置局部或全局变量
set_register设置CPU寄存器

导航

工具说明
threads列出所有线程
switch_thread切换到其他线程
switch_frame切换到其他堆栈帧

符号

工具说明
modules列出已加载的模块
set_symbol_path设置符号搜索路径(带可选缓存)
reload_symbols强制重新加载符号
load_symbols_for加载一个特定模块的符号(快速)
search_symbol按通配符模式搜索符号
noisy_symbol_loading切换详细符号诊断

分析

工具说明
analyze_crash快跑 !analyze -v 自动碰撞分析
exception_record显示当前异常详细信息
set_exception_filter配置哪些异常中断,哪些异常被忽略

逃生舱口

工具说明
cdb_command运行任何原始的CDB/Winkey命令

指导工作流程(MCP提示)

该服务器包括三个代理可以遵循的指导工作流:

  • live_debug --对实时流程的逐步调查
  • crash_triage --系统性碰撞倾倒分析
  • memory_corruption --使用数据断点查找内存损坏

演出

服务器针对速度进行了优化:

  • 默认情况下没有符号 --空的 -y "" 防止符号服务器查找缓慢
  • -snul --禁用不合格符号加载(大型项目的大幅加速)
  • .symopt+0x100SYMOPT_NO_UNQUALIFIED_LOADS 运行时
  • 抑制异常噪声sxd *; sxe av; sxi eh; sxi ch (仅访问违规中断)
  • 选择性符号加载load_symbols_for('mymodule') 加载一个PDB,而不是全部
操作时间
启动小二进制~0.3s
加载一个模块的符号~0.01秒
呼叫堆栈\<1ms
跨步\<1ms
读取内存\<1ms
计算表达式\<1ms

建筑测试夹具

cd tests/fixtures
cmake -B build
cmake --build build

运行测试

pytest tests/ -v

每个模块的测试共享一个CDB会话以提高速度(总共约2.5分钟)。

建筑

Claude Code ←→ MCP (stdio/JSON-RPC) ←→ Python server ←→ cdb.exe (subprocess)
                                              ↕
                                     background reader thread
                                     (readline from stdout pipe)
                                              ↕
                                     echo marker detection
                                     (deterministic command completion)

服务器管理 cdb.exe 作为具有以下功能的子流程:

  • 背景阅读器线程 --逐行读取stdout(避免Windows管道缓冲死锁)
  • 回声标记协议 --发送 .echo __MARKER__ 在每次命令后进行可靠的完成检测
  • 铝土矿清理 --在服务器退出时杀死孤立的cdb进程

许可证

这是免费且无阻碍的软件,已发布到公共领域。 看 未授权 了解详情。

目录标签

目录标签

调试工具PythonClaude本地部署AI辅助开发实时调试Windows开发内存检查

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

39

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP