Add shared-session MCP source debugger adapter
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
|
||||
Дата: 2026-09-16. План: [mame-source-debug.md](mame-source-debug.md).
|
||||
Реализованы сборка/карта, проверенный транспорт, базовая C-сессия,
|
||||
постоянный session server, DAP MVP, VS Code launch и build task. MCP C-уровня,
|
||||
постоянный session server, DAP MVP, VS Code launch/build task и первый
|
||||
stdio MCP-адаптер C-уровня. Эксклюзивное владение CPU между клиентами,
|
||||
безопасный restart и расширенная отладка ещё не готовы.
|
||||
Этапы плана не считаются завершёнными целиком по одному успешному репро.
|
||||
|
||||
@@ -118,7 +119,21 @@
|
||||
копию системного HDD и отдельные state-каталоги, показывает окно Sprinter,
|
||||
ждёт DSS, ставит только service-точку `main`, вводит `a:\\NAME.EXE`,
|
||||
проверяет сигнатуру entry и запускает session server. Закрытие DAP
|
||||
завершает только созданные им server/MAME и удаляет временный каталог.
|
||||
завершает только созданные им server/MAME, удаляет временный каталог и
|
||||
свой Unix socket (с проверкой inode, чтобы не удалить новый сеанс).
|
||||
- `sdbg_mcp.py` предоставляет 16 инструментов через официальный MCP SDK
|
||||
2.x поверх того же session server: статус, C-позиция, регистры, logical
|
||||
memory, переменные, события/логи, личные точки и команды исполнения.
|
||||
MCP-точки имеют owner ID и не могут удалить точки VS Code; при обычном
|
||||
закрытии MCP-клиента они очищаются. Живой совместный прогон проверил
|
||||
структурированные ответы, отказ на удаление чужой точки и последующее
|
||||
срабатывание точки DAP с provider `sdbg` и `osx`. Отдельный WAITKEY-прогон
|
||||
подтвердил удаление личной точки при running CPU и дальнейшее завершение
|
||||
шага после клавиши.
|
||||
Повторный запуск на том же фиксированном socket после прежнего stale-файла
|
||||
прошёл; после Stop путь удалён.
|
||||
Контракт запуска и ограничения — в
|
||||
[руководстве по MCP](sdbg-mcp.md).
|
||||
|
||||
## Использование карты
|
||||
|
||||
@@ -224,6 +239,8 @@ pyenv exec python tests/sdbg/run_vscode_dap_probe.py
|
||||
pyenv exec python tests/sdbg/run_vscode_dap_probe.py --exit-while-stopped
|
||||
pyenv exec python tests/sdbg/run_vscode_dap_probe.py --stop-while-stopped
|
||||
pyenv exec python tests/sdbg/run_vscode_dap_probe.py --term-while-stopped
|
||||
pyenv exec python tests/sdbg/run_vscode_dap_probe.py --mcp-python /tmp/sprinter-sdbg-mcp-venv/bin/python
|
||||
pyenv exec python tests/sdbg/run_vscode_dap_probe.py --waitkey --emulated-key --clear-while-running
|
||||
pyenv exec python tests/sdbg/run_vscode_dap_probe.py --waitkey --manual-key
|
||||
```
|
||||
|
||||
@@ -267,7 +284,7 @@ commit `b0c4527c2edb1ee177fd09b3c412b65b385bf35b`:
|
||||
| Ошибочная debug-сборка, 2026-09-15 | Изолированный `fault.c` вернул код 2 от make, `file:1: error 20` сохранился, Python traceback удалён; MAME не участвует |
|
||||
| Владение и generation | Второй FileBridge и чтение со stale generation отклоняются |
|
||||
|
||||
Полный host-набор: 39 тестов (38 прошли, один Unix-socket тест пропущен только
|
||||
Полный host-набор: 44 теста (43 прошли, один Unix-socket тест пропущен только
|
||||
из-за запрета `bind` в sandbox). Тот же socket path проверен живым DAP-запуском.
|
||||
После разделения репозиториев установленный VSIX в изолированном профиле
|
||||
VS Code запустил сборку SprPoP и остановился в `src/sprpop.c:264` (`main`)
|
||||
@@ -328,8 +345,9 @@ host-моста пока не готова: FileBridge использует `fcn
|
||||
|
||||
Также startup debugscript с `g` может продолжить первое реальное попадание;
|
||||
живой bridge-тест не использует такой скрипт. Повторная загрузка autoboot
|
||||
на reset защищена от дублирования callback. Старый mamebridge параллельно
|
||||
с sdbgbridge не загружать: общая арбитрирующая сессия ещё не реализована.
|
||||
на reset защищена от дублирования callback. Raw `-plugin mamebridge`
|
||||
параллельно с `sdbgbridge` не загружать: общая арбитрирующая сессия для
|
||||
двух Lua-мостов ещё не реализована.
|
||||
Два одновременно запущенных процесса MAME через MCP bridge не проверялись;
|
||||
корректная маршрутизация команд между ними не гарантируется. Это отдельная
|
||||
отложенная задача в [TODO.md](TODO.md).
|
||||
@@ -353,8 +371,12 @@ Crash reports в 19:22/19:23 относились к неподдержанно
|
||||
строит проверенное условие через I/O port. После штатных прогонов в 20:43 и
|
||||
позже новых `mame.arm-*.ips` не появилось.
|
||||
|
||||
Далее по плану: сделать MCP-адаптер, безопасный restart и расширенные
|
||||
выражения. VSIX уже упакован;
|
||||
Далее по плану: арбитраж управления CPU и lease/cleanup для MCP-точек при
|
||||
аварийном выходе клиента, затем безопасный restart и расширенные выражения.
|
||||
Низкоуровневые MAME MCP-инструменты (`src/mame_mcp.py` с новым
|
||||
`-plugin mamebridge` либо старым `mame_bridge.lua`) нельзя просто перенести: они должны
|
||||
проходить через общий session server и получить проверенный контракт для
|
||||
ввода, скриншотов, записи/watchpoints. VSIX уже упакован;
|
||||
для IDE ещё нужны Run-команда, выбор профиля
|
||||
сборки/данных и расширенная диагностика assembler/linker.
|
||||
Базовый attach уже проверяет принадлежность resident/current-bank к build,
|
||||
|
||||
Reference in New Issue
Block a user