Sprinter: добавить отладку C-исходников и интеграцию VS Code

This commit is contained in:
2026-09-15 17:58:41 +03:00
parent 50c6e56b7b
commit e4695b8281
62 changed files with 7147 additions and 27 deletions
+48
View File
@@ -0,0 +1,48 @@
#!/usr/bin/env python3
"""Постоянная sdbg-сессия: единственный владелец MAME для CLI/MCP/DAP."""
import argparse
import json
import signal
import sys
import threading
from sdbg.model import DebugMap
from sdbg.server import SessionController, SessionRpcServer
from sdbg.session import DebugSession, SessionError
from sdbg.transport import BridgeError, FileBridge
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--build', required=True)
parser.add_argument('--ipc', required=True)
parser.add_argument('--session', required=True)
parser.add_argument('--socket', required=True)
parser.add_argument('--timeout', type=float, default=5)
args = parser.parse_args()
bridge = controller = server = None
try:
bridge = FileBridge(args.ipc, args.session, args.timeout)
controller = SessionController(DebugSession(DebugMap(args.build), bridge))
server = SessionRpcServer(args.socket, controller)
stop = lambda *_: threading.Thread(target=server.server.shutdown, daemon=True).start()
signal.signal(signal.SIGTERM, stop)
signal.signal(signal.SIGINT, stop)
print(json.dumps({'ready': True, 'socket': args.socket,
'build_id': controller.attached['build_id']}, ensure_ascii=False), flush=True)
server.serve_forever()
return 0
except (BridgeError, SessionError, ValueError, OSError, KeyError) as error:
print('sdbg-server: ' + str(error), file=sys.stderr)
return 1
finally:
if server is not None:
server.close()
if controller is not None:
controller.close()
elif bridge is not None:
bridge.close()
if __name__ == '__main__':
sys.exit(main())