VS代码的MCP调试器
支持多语言的VS Code人工智能调试。通过模型上下文协议与GitHub Copilot和AI代理集成。通过调试适配器协议调试JavaScript、TypeScript、Python、Java、C/C++、Go、Rust、PHP、Ruby等。
注: VS Code扩展通过调试适配器协议支持所有语言。独立的MCP服务器(用于VS Code之外的AI代理)仅通过Chrome DevTools协议支持Node.js/JavaScript。
🔗 仓库
此包现在保存在自己的存储库中: ****
此存储库是 AI 能力套件 在GitHub上。
特性
🐛 高级调试
- VS代码扩展:通过调试适配器协议提供多语言支持(JavaScript、TypeScript、Python、C/C++、Java、Go、Rust、PHP、Ruby等)
- 独立MCP服务器:通过Chrome DevTools协议进行Node.js/JavaScript调试
- 智能断点:AI根据代码分析建议断点位置
- 条件断点:仅在满足特定条件时中断
- 挂起检测:自动检测无限循环和挂起进程(仅限Node.js)
- 源地图支持:使用完整的源代码映射集成调试TypeScript和其他编译语言
- 代码透镜:函数、循环和错误处理程序中的内联断点建议
📊 性能分析
- CPU性能分析:识别性能瓶颈
- 内存配置文件:拍摄堆快照并检测内存泄漏
- 绩效时间表:跟踪执行事件和时间
🤖 人工智能集成
- GitHub复制品就绪:与GitHub Copilot无缝协作
- MCP协议:向AI代理公开调试功能
- 聪明的建议:AI驱动的调试建议
🧪 测试框架支持
- VS代码扩展:Jest、Mocha、Vitest(JS/TS)、pytest(Python)、JUnit(Java)、go test(go)、cargo test(Rust)等等
- 独立MCP服务器:Jest、Mocha、Vitest(仅限Node.js)
🎨 语言服务器协议(LSP)功能
代码智能
- 悬停信息:将鼠标悬停在变量上以查看调试说明和检查提示
- 签名帮助:所有调试器函数的实时参数提示和文档
- 内联提示:显示返回类型(会话id、断点id、变量类型)的内联类型注释
- 文件符号:显示调试会话、断点、检查和挂起检测的大纲视图
- 语义令牌:调试器函数和变量的语法突出显示
代码操作(4个功能)
- 将console.log转换为断点:使用监视表达式将日志语句转换为适当的断点
- 删除console.log:清理调试语句
- 裹在试抓:围绕有风险的操作添加错误处理(例如JSON.parse)
- 添加挂起检测:为无限循环插入挂起检测注释
导航和层次结构
- 调用层次结构:可视化调试器函数依赖关系和调用关系
- 类型层次:探索调试器类型关系(DebugSession、断点、StackFrame、变量)
- 文档链接:调试器文档的快速链接
- 转到定义:导航到调试器函数定义
代码编辑
- 折叠范围:折叠/展开调试会话块
- 选择范围:调试器代码的智能选择扩展
- 链接编辑:同时编辑相关调试器标识符
- 颜色提供者:用于诊断的视觉严重性指示器
诊断与验证
- 无限循环检测:警告
while(true)带有悬挂检测建议的图案 - 缺少错误处理:建议尝试捕获JSON.parse等操作
- Console.log提示:建议使用断点而不是console.log进行调试
- 实时验证:键入时即时反馈
安装
来自VS代码市场
- 打开VS代码
- 转到扩展(Ctrl+Shift+X/Cmd+Shift+X)
- 搜索“MCP调试器”
- 单击安装
安装MCP调试器服务器
该扩展需要MCP调试器服务器才能运行。全局安装:
npm install -g @ai-capabilities-suite/mcp-debugger-server或者将其安装到您的项目中:
npm install --save-dev @ai-capabilities-suite/mcp-debugger-server从VSIX文件
code --install-extension ts-mcp-debugger-1.0.0.vsix快速开始
1.开始调试
选项A:使用命令选项板
- 打开任何源代码文件(JavaScript、TypeScript、Python、Java等)
- 按
Ctrl+Shift+P(Mac上的Cmd+Shift+P) - 键入“MCP调试器:启动调试会话”
- 按Enter键
选项B:使用调试配置
- 打开调试视图(Ctrl+Shift+D/Cmd+Shift+D)
- 点击“创建launch.json文件”
- 选择“MCP Node.js调试器”
- 按F5开始调试
2.检测悬挂
- 打开一个可能有无限循环的文件
- 按
Ctrl+Shift+P(Mac上的Cmd+Shift+P) - 类型“MCP调试器:检测挂起进程”
- 查看挂起检测结果
3.设置智能断点
- 将光标放在一条线上
- 右键单击并选择“MCP调试器:设置智能断点”
- 从AI建议的断点位置中选择
配置
设置
在VS代码设置中配置扩展(Ctrl+, / Cmd+,):
{
"mcp-debugger.serverPath": "",
"mcp-debugger.autoStart": true,
"mcp-debugger.defaultTimeout": 30000,
"mcp-debugger.enableHangDetection": true,
"mcp-debugger.hangDetectionTimeout": 5000,
"mcp-debugger.enableProfiling": false,
"mcp-debugger.logLevel": "info"
}启动配置
添加到 .vscode/launch.json:
调试当前文件
{
"type": "mcp-node",
"request": "launch",
"name": "MCP Debug Current File",
"program": "${file}",
"cwd": "${workspaceFolder}",
"enableHangDetection": true
}使用分析进行调试
{
"type": "mcp-node",
"request": "launch",
"name": "MCP Debug with Profiling",
"program": "${workspaceFolder}/index.js",
"cwd": "${workspaceFolder}",
"enableProfiling": true,
"enableHangDetection": true
}调试Jest测试
{
"type": "mcp-node",
"request": "launch",
"name": "MCP Debug Jest",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["--runInBand"],
"cwd": "${workspaceFolder}",
"enableHangDetection": true
}命令
| 命令 | 描述 | 快捷方式 |
|---|---|---|
MCP Debugger: Start Debug Session | 开始调试当前文件 | - |
MCP Debugger: Detect Hanging Process | 检测无限循环 | - |
MCP Debugger: Set Smart Breakpoint | 设置AI建议断点 | - |
MCP Debugger: Start CPU Profiling | 启动CPU分析器 | - |
MCP Debugger: Take Heap Snapshot | 拍摄内存快照 | - |
LSP命令(可通过MCP协议获得)
| 命令 | 描述 |
|---|---|
mcp.debugger.start | 通过MCP启动调试会话 |
mcp.debugger.setBreakpoint | 通过MCP设置断点 |
mcp.debugger.continue | 恢复执行 |
mcp.debugger.stepOver | 跨过当前线路 |
mcp.debugger.stepInto | 进入功能 |
mcp.debugger.stepOut | 退出功能 |
mcp.debugger.pause | 暂停执行 |
mcp.debugger.inspect | 检查变量 |
mcp.debugger.getStack | 获取调用堆栈 |
mcp.debugger.detectHang | 检测悬挂过程 |
mcp.debugger.profileCPU | 启动CPU性能分析 |
mcp.debugger.profileMemory | 获取内存快照 |
LSP功能正在发挥作用
代码镜头断点建议
扩展程序会自动在战略位置建议断点:
function processData(items) { // 🔴 Set Breakpoint
for (let i = 0; i < items.length; i++) { // 🔍 Debug Loop
try {
const result = transform(items[i]);
results.push(result);
} catch (error) { // ⚠️ Debug Error Handler
console.error(error);
}
}
}签名帮助
键入时获取实时参数提示:
debugger_start(
// ↓ Shows: command: string, args?: string[], cwd?: string, timeout?: number
'node',
['app.js'],
'/path/to/project',
30000
);内联提示
请参阅内联返回类型:
const session = debugger_start('node', ['test.js']); // → session-id
const bp = debugger_set_breakpoint(session, 'test.js', 10); // → breakpoint-id
const value = debugger_inspect(session, 'user.age'); // → number代码操作
快速修复程序会自动出现:
// Before: console.log statement with hint
console.log(user.name); // 💡 Consider using breakpoints instead
// Quick Fix 1: Convert to breakpoint
// Watch: user.name
debugger; // Breakpoint - inspect user.name
// Quick Fix 2: Remove console.log
// (statement removed)诊断
实时警告和建议:
// ⚠️ Warning: Potential infinite loop detected
while (true) {
// Consider using hang detection
}
// ℹ️ Info: Consider wrapping in try-catch
const data = JSON.parse(input);调用层次结构
可视化函数依赖关系:
debugger_continue
↓ depends on
debugger_set_breakpoint
↓ depends on
debugger_start类型层次
探索类型关系:
Object
├── Breakpoint
├── StackFrame
└── Variable
EventEmitter
└── DebugSession使用示例
示例1:调试Node.js应用程序
// app.js
function calculateSum(numbers) {
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
return sum;
}
const result = calculateSum([1, 2, 3, 4, 5]);
console.log(result);- 打开
app.js - 在第3行(循环内部)设置断点
- 按F5开始调试
- 使用F10单步执行代码(Step Over)
- 检查调试侧栏中的变量
示例2:检测无限循环
// hang.js
function infiniteLoop() {
let i = 0;
while (true) {
i++;
// This will hang forever
}
}
infiniteLoop();- 打开
hang.js - 运行“MCP调试器:检测挂起进程”
- 查看显示无限循环位置的挂起检测结果
示例3:配置文件性能
// slow.js
function slowFunction() {
let result = 0;
for (let i = 0; i < 1000000; i++) {
result += Math.sqrt(i);
}
return result;
}
slowFunction();- 打开
slow.js - 在启用分析的情况下开始调试
- 运行“MCP调试器:启动CPU分析”
- 让代码执行
- 查看CPU配置文件以识别瓶颈
GitHub复制集成
MCP调试器与GitHub Copilot无缝协作,用于人工智能辅助调试:
- 调试上下文:副驾驶可以访问调试信息
- 聪明的建议:获取基于AI的调试建议
- 断点建议:副驾驶建议最佳断点位置
- 错误分析:Copilot有助于分析错误和异常
- 自主调试:Copilot可以自动调试代码
Copilot快速入门
- 打开副驾驶聊天(Ctrl+Shift+I/Cmd+Shift+I)
- 问:“调试此文件并找到错误”
- Copilot将自动使用MCP调试器工具
对话示例
You: "Debug this function and tell me why it returns undefined"
Copilot: [Starts debug session, sets breakpoints, inspects variables, explains issue]
You: "Check if this script has an infinite loop"
Copilot: [Uses hang detection, identifies loop location, suggests fix]
You: "Why is this function so slow?"
Copilot: [Profiles code, identifies bottlenecks, suggests optimizations]了解更多
请参阅 副驾驶集成指南 用于:
- 详细的设置说明
- 完整的调试工作流程
- 示例对话
- 提示和最佳实践
- 故障排除指南
AI代理的LSP功能
语言服务器协议集成使AI代理能够:
1. 理解代码上下文
- 访问文档符号以标识调试会话和断点
- 使用语义标记来理解调试器特定的语法
- 导航类型层次结构以了解调试器数据结构
2. 提供智能建议
- 使用代码镜头在最佳位置建议断点
- 推荐常见调试模式的快速修复
- 提供签名帮助以正确使用调试器函数
3. 验证码
- 检测无限循环并建议挂起检测
- 识别缺失的错误处理
- 警告低效的调试实践(console.log)
4. 导航代码
- 使用调用层次结构了解调试器函数依赖关系
- 按照文档链接访问相关文档
- 导航调试器类型的类型层次结构
示例:使用LSP功能的AI代理
// AI agent analyzes code using LSP
// 1. Gets document symbols → finds existing breakpoints
// 2. Uses call hierarchy → understands function dependencies
// 3. Checks diagnostics → identifies infinite loop warning
// 4. Suggests code action → adds hang detection
// 5. Provides signature help → shows correct parameters
// AI's suggestion:
const session = debugger_start('node', ['app.js'], process.cwd(), 30000);
const result = debugger_detect_hang('node', ['app.js'], 5000, 100);
if (result.hung) {
console.log(`Hang detected at ${result.location}`);
}故障排除
MCP服务器未启动
问题:扩展显示“MCP调试器服务器未运行”
解决方案:
- 检查是否安装了Node.js:
node --version - 安装MCP服务器:
npm install -g @ai-capabilities-suite/mcp-debugger-server - 如果需要,在设置中设置自定义服务器路径
- 重新启动VS代码
断点不起作用
问题:未命中断点
解决方案:
- 确保为TypeScript启用源映射
- 检查文件路径是否为绝对路径
- 验证程序是否确实在执行代码
- 尝试在第一行设置断点
悬挂检测假阳性
问题:挂起检测报告挂起合法的长时间运行操作
解决方案:
- 增加
mcp-debugger.hangDetectionTimeout在设置中 - 禁用特定调试会话的挂起检测
- 改用条件断点
性能问题
问题:调试速度慢
解决方案:
- 如果不需要,禁用分析
- 减少断点数量
- 增加超时值
- 关闭其他VS代码扩展
需求
- VS Code:1.85.0或更高版本
- 操作系统:Windows、macOS或Linux
- 用于VS代码扩展(多语言):
- JavaScript/TypeScript:Node.js 16.x或更高版本 - python:带有debugpy扩展名的Python 3.x - Java:带有Java调试服务器扩展的JDK - C/C++:带有C/C++扩展的GDB或LLDB - 去:使用deep扩展的Go工具链 - 锈:带有CodeLLDB扩展名的Rust工具链 - 其他语言:安装相应的VS Code调试扩展
- 适用于独立MCP服务器(仅限Node.js):
- Node.js:16.x或更高 - JavaScript/TypeScript:完全支持源地图
扩展设置
此扩展有助于以下设置:
mcp-debugger.serverPath:MCP调试器服务器可执行文件的路径mcp-debugger.autoStart:打开VS Code时自动启动MCP服务器mcp-debugger.defaultTimeout:调试操作的默认超时(ms)mcp-debugger.enableHangDetection:启用自动挂起检测mcp-debugger.hangDetectionTimeout:挂起检测超时(ms)mcp-debugger.enableProfiling:启用性能分析功能mcp-debugger.logLevel:日志级别(调试、信息、警告、错误)
已知问题
- 在慢速网络上,WebSocket连接可能会超时
- 对于Types/transpiled语言,源映射必须内联或位于同一目录中
- 某些Node.js本机模块可能无法调试
- VS代码扩展:特定于语言的功能取决于安装的调试适配器
- 独立MCP服务器:仅支持Node.js/JavaScript调试(不支持Python、Java等)
- 悬挂检测和分析:仅Node.js(不适用于其他语言)
发布说明
1.5.0
LSP主要更新:
- 13个新的LSP功能 用于增强代码智能
- 代码操作:将console.log转换为断点,添加try-catch,删除日志记录
- 签名帮助:所有调试器函数的实时参数提示
- 内联提示:返回值的内联类型注释
- 文件符号:调试会话和断点的大纲视图
- 语义令牌:调试器代码的语法突出显示
- 调用层次结构:可视化函数依赖关系
- 类型层次:探索调试器类型关系
- 诊断:具有无限循环检测的实时验证
- 代码透镜:内联断点建议
- 文档链接:快速访问文档
- 折叠范围:折叠/展开调试块
- 选择范围:智能选择扩展
- 链接编辑:同步标识符编辑
- 颜色提供者:视觉严重性指示器
- 80+综合测试 LSP功能
- E2E测试 适用于所有LSP功能
1.0.0
初始版本:
- 使用MCP集成进行高级调试
- 挂起检测
- CPU和内存分析
- 智能断点建议
- GitHub Copilot集成
- 测试框架支持(Jest、Mocha、Vitest)
贡献
发现错误或有功能请求?请打开一个问题 .
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
详细信息
______________________________________________________________________
享受AI调试! 🚀
