JDWP调试代理

DebuggerX是一个支持多调试器同时连接到同一JVM的JDWP代理,提供HTTP API和断点解析功能,适用于协作调试和AI集成。

  • by NicolasVautrin
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 NicolasVautrin/debuggerX-mcp-fork

使用说明

调试器X-MCP分叉

叉德 调试器X 改进了MCP/Claude代码集成。

调试器X是什么?

DebuggerX是一个JDWP代理,允许 多个调试器同时连接到同一JVM它允许多个开发人员(或工具)共享断点和调试状态,从而促进协作调试。

此分叉中添加的功能

1.断点的解决

原始问题: 断点仅使用原始JDWP ID(ClassID、MethodID、CodeIndex)跟踪。如果没有外部调试器,就不可能知道断点在哪里。

解决方案: 分叉自动将断点解析为可读名称:

  • className :类的全名(例如: com.axelor.apps.repository.DMSFileRepository)
  • lineNumber :源文件中的行号

Pourquoi: 对于IA(Claude代码)在不需要IDE的情况下理解调试状态至关重要。

2.完整的HTTP API

新增端点:

# Lister tous les breakpoints avec infos résolues
GET http://localhost:55006/breakpoints

# Supprimer un breakpoint spécifique
DELETE http://localhost:55006/breakpoints/{requestId}

Pourquoi: 允许通过MCP或脚本对断点进行编程控制,而无需依赖IDE。

3.断点的多客户端发现

主要特点: fork允许 列出所有连接客户端定位的所有断点 (IntelliJ、Eclipse、MCP等)。

示例:

  • Intellij提出了一个断点 MyClass:42
  • Claude Code可以通过以下方式查看此断点: GET /breakpoints
  • Claude Code可以分析上下文并在需要时删除断点

Pourquoi: 人类调试器(IDE)和人工智能(MCP)之间的协调。AI可以查看和管理现有的断点,而不会干扰开发人员的工作流程。

4.纠正错误批评

  • 修复NullPointer异常 在解析系统中(debuggerservice.java:159-172)
  • 登记包裹 PacketMap中的BreakpointResolver
  • 捕获日志 你的代理人 debuggerx-proxy.log

使用

启动代理

java -jar debuggerx-bootstrap-1.0-SNAPSHOT.jar

默认端口:

  • JVM JDWP: 5005
  • 代理JDWP: 55005 (在此处连接您的IDE)
  • API HTTP: 55006

连接IDE

IntelliJ/Eclipse:

  • 主持人: localhost
  • 端口: 55005

API HTTP

# Voir tous les breakpoints (tous clients)
curl http://localhost:55006/breakpoints

# Résultat exemple :
# {
#   "breakpoints": [
#     {
#       "requestId": 17,
#       "className": "com.axelor.apps.repository.DMSFileRepository",
#       "lineNumber": 31,
#       "classId": 16681,
#       "methodId": 1877543952736,
#       "codeIndex": 0
#     }
#   ]
# }

# Supprimer un breakpoint
curl -X DELETE http://localhost:55006/breakpoints/17

MCP集成

该分叉设计用于与JDWP MCP服务器配合使用,该服务器为Claude代码公开了21个调试工具:

  • jdwp_list_all_breakpoints() -查看所有断点(所有客户)
  • jdwp_clear_breakpoint_by_id(requestId) -删除断点
  • jdwp_get_threads(), jdwp_get_stack(), jdwp_get_locals()等等。

看 mcp-jdwp-java 对于完整的MCP服务器。

建筑

┌─────────────────────┐
│   Claude Code AI    │
└──────────┬──────────┘
           │ MCP
┌──────────▼──────────┐
│  MCP JDWP Server    │
└──────────┬──────────┘
           │ HTTP API (55006) + JDI (55005)
┌──────────▼──────────┐
│  debuggerX Proxy    │ ← CE FORK
│  - Résolution BP    │
│  - API HTTP         │
│  - Multi-client BP  │
└──────────┬──────────┘
           │ JDWP (5005)
┌──────────▼──────────┐
│    JVM / App Java   │
└─────────────────────┘

文件编制技术

有关更改的完整技术详细信息,请参阅 FORK_RATIONALE.md.

信贷