Handle MAME SIGTERM during source debugging

This commit is contained in:
Александр Петров
2026-09-16 20:10:33 +03:00
parent f91d296476
commit addc00a0f3
5 changed files with 79 additions and 8 deletions
+14 -5
View File
@@ -222,6 +222,8 @@ pyenv exec python tests/sdbg/run_mame_probe.py --banked --launcher --source-step
pyenv exec python tests/sdbg/run_mame_probe.py --banked --launcher --step-out
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 --waitkey --manual-key
```
@@ -273,9 +275,16 @@ VS Code запустил сборку SprPoP и остановился в `src/s
при остановке в `hello/main` подтверждает DAP `terminated` после внезапной
потери процесса. Штатный DAP launch в `hello/main` также повторно прошёл
с `sdbg` и опциональным `osx` debugger provider.
Отдельная проба `SIGTERM` остановленному MAME не дала DAP `terminated` за
15 секунд; причина (обработка сигнала самим MAME или путь закрытия сессии)
ещё не установлена. Это отдельный OS-signal путь, не равный закрытию окна.
Первоначально прямой `SIGTERM` остановленному MAME не давал DAP `terminated`:
через 12 секунд процесс оставался живым. Причина: SDL3 по умолчанию
преобразует `SIGTERM` в `SDL_EVENT_QUIT`, а SDL3 OSD MAME это событие
не обрабатывает. Launcher теперь выставляет `SDL_NO_SIGNAL_HANDLERS=1`
только для своего MAME, если переменная не задана пользователем. Повторный
живой прогон подтвердил `SIGTERM` → DAP `terminated`; DAP `disconnect`
(VS Code Stop) завершил MAME и адаптер с provider `sdbg` и `osx`.
Отдельный патч MAME для этого
не требуется. Закрытие окна по-прежнему проверено только через тот же
`schedule_exit()` в исходнике MAME, без автоматического UI-клика.
Живой lifecycle-пробник на банковой программе теперь прошёл с `sdbg` и
опциональным `osx` provider. На остановке в `main` Lua вызвал
@@ -344,8 +353,8 @@ Crash reports в 19:22/19:23 относились к неподдержанно
строит проверенное условие через I/O port. После штатных прогонов в 20:43 и
позже новых `mame.arm-*.ips` не появилось.
Далее по плану: исследовать отдельно OS-signal путь `SIGTERM`, сделать
MCP-адаптер, безопасный restart и расширенные выражения. VSIX уже упакован;
Далее по плану: сделать MCP-адаптер, безопасный restart и расширенные
выражения. VSIX уже упакован;
для IDE ещё нужны Run-команда, выбор профиля
сборки/данных и расширенная диагностика assembler/linker.
Базовый attach уже проверяет принадлежность resident/current-bank к build,