Handle MAME SIGTERM during source debugging
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -684,9 +684,13 @@ exit/reset/reload инвалидируют состояние; потеря кл
|
||||
Lua `machine:exit()` и реальный save/load state при остановке в `main`:
|
||||
оба завершают DAP, post-load удаляет старые точки. SDL3-событие закрытия
|
||||
окна использует тот же `schedule_exit()`; прямой UI-клик не автоматизировался.
|
||||
Reset по-прежнему требует безопасного отдельного репро. `SIGTERM`
|
||||
остановленному процессу MAME пока не дал DAP `terminated` за 15 секунд;
|
||||
это отдельный OS-signal путь, не проверка штатного выхода.
|
||||
Reset по-прежнему требует безопасного отдельного репро. Для запускаемого
|
||||
через toolkit MAME launcher выставляет `SDL_NO_SIGNAL_HANDLERS=1`, если
|
||||
переменная не задана пользователем: SDL3 иначе превращает `SIGTERM` в
|
||||
`SDL_EVENT_QUIT`, который MAME SDL3 OSD игнорирует. Живые пробы подтвердили
|
||||
прямой `SIGTERM` → DAP `terminated` и DAP `disconnect` → завершение MAME и
|
||||
адаптера при остановке в `main`. Изменение действует только на MAME,
|
||||
запущенный launcher; системный MAME без этого окружения ведёт себя по-прежнему.
|
||||
|
||||
### Этап 3 — полезная CLI/MCP-отладка и логи
|
||||
|
||||
|
||||
@@ -162,6 +162,12 @@ Launcher монтирует временную копию CHD как `-hard2`,
|
||||
6. Завершите сессию кнопкой Stop. Затем повторите профиль с `osx`: вместе с
|
||||
тем же VS Code-сеансом должно открыться штатное Cocoa-окно debugger MAME.
|
||||
|
||||
Stop отправляет DAP `disconnect`; launcher завершает запущенный им MAME.
|
||||
Чтобы SDL3 не перехватывал `SIGTERM` в необрабатываемое MAME событие Quit,
|
||||
launcher задаёт этому процессу `SDL_NO_SIGNAL_HANDLERS=1`, если переменная
|
||||
не была задана вручную. Прямой `SIGTERM` и Stop проверены живыми пробниками
|
||||
на остановке в `main`; они не требуют отдельного патча MAME.
|
||||
|
||||
Команда палитры `Sprinter: Build Active Project` собирает приложение по
|
||||
Makefile открытого C-файла. Задачи `Sprinter: Build ...` доступны и в
|
||||
`Tasks: Run Task`. Для launch автоматическая сборка включена по умолчанию,
|
||||
|
||||
Reference in New Issue
Block a user