mcp-cdb互动
Claude Code的交互式CDB调试器MCP服务器。在CDB下启动进程,附加到正在运行的进程,发送调试器命令,中断执行,创建转储和分离。
设置
pip install -r requirements.txtClaude代码配置
添加 ~/.claude.json 在...之下 mcpServers:
{
"cdb-interactive": {
"type": "stdio",
"command": "cmd.exe",
"args": [
"/c", "python",
"
/Tools/mcp-cdb-interactive/server.py",
"--timeout", "120",
"--verbose"
],
"env": {
"_NT_SYMBOL_PATH": "SRV*C:\\Symbols*https://msdl.microsoft.com/download/symbols"
}
}
}替换 使用存储库的实际路径。服务器将自动检测 cdb.exe 从标准Windows SDK位置,或者您可以指定 --cdb-path 明确地。
安全说明
默认情况下,危险的CDB命令(.shell, .script*, .load阻止了可以执行任意OS命令的操作系统(例如。要启用它们(请谨慎使用):
"args": ["...", "--allow-dangerous-commands"]工具
| 工具 | 说明 |
|---|---|
cdb_launch | 在CDB下启动一个带有自动异常处理程序的进程 |
cdb_attach | 通过PID(侵入式或非侵入式)连接到正在运行的进程 |
cdb_cmd | 在活动会话中执行Winge/CDB命令 |
cdb_go | 无需等待完成即可恢复执行(执行/继续) |
cdb_break | 发送中断信号以中断正在运行的调试对象 |
cdb_detach | 从进程中分离并关闭会话 |
cdb_status | 获取当前会话状态 |
cdb_dump | 创建调试对象的小型转储 |
cdb_output | 在不发送命令的情况下读取缓冲输出(运行时尾随) |
cdb_wait | 等待被调试对象停止(断点、异常或退出) |
用法示例
在调试器下启动测试
cdb_launch(executable="dotnet.exe", arguments="test MyProject.csproj --configuration Debug --no-build")附挂工艺
cdb_attach(pid=12345, invasive=false)
cdb_cmd(command="~*kn")
cdb_dump(path="C:\\temp\\hang.dmp")
cdb_detach()接住碰撞
cdb_launch(executable="MyApp.exe")
# ... app crashes, CDB breaks in ...
cdb_cmd(command="!analyze -v")
cdb_cmd(command="!clrstack")
cdb_dump(path="C:\\temp\\crash.dmp")