gdb-multiarch-mcp
gdb-multiarch-mcp
Ein MCP-Server (Model Context Protocol), der KI-Assistenten wie Claude direkten Zugriff auf gdb-multiarch für das Debuggen von Nintendo Switch-Executables ermöglicht, die auf Yuzu oder einer echten Konsole mit GDB-Stub laufen.
Aufbauend auf Ipiano/gdb-mcp fügt dieser Fork Switch-spezifische Debugging-Tools für offset-basierte Breakpoints, Instruction-Patching (NOP/Stub/Replace), Frame-Pointer-Backtraces und Adresslokalisierung hinzu – alles relativ zur Basisadresse des Spiels ($main).
Funktionsweise
Wenn Claude (oder ein beliebiger MCP-Client) switch_start_session aufruft, führt der Server folgende Schritte aus:
Startet
gdb-multiarchinnerhalb von WSLLädt die Switch-Debugging-Befehle (
.gdbinit.switch)Verbindet sich über
target extended-remotemit dem GDB-StubWartet auf den Start der Anwendung und hängt sich an diese an
Setzt automatisch
$mainauf die Basisadresse voncross2_Release.nss
Von dort aus sind alle Standard-GDB-Operationen und Switch-spezifischen Tools über MCP-Tool-Aufrufe verfügbar.
Voraussetzungen
Windows mit WSL —
gdb-multiarchläuft innerhalb von WSL (getestet mit Debian)gdb-multiarch in WSL installiert (
sudo apt install gdb-multiarch)Python 3.10+ in WSL
Ein GDB-Stub — entweder der integrierte GDB-Stub von Yuzu oder eine Switch mit sys-gdbstub
Claude Code (oder ein beliebiger MCP-kompatibler Client)
Installation
1. Installieren Sie gdb-multiarch in WSL
wsl -d Debian
sudo apt install gdb-multiarch2. Installieren Sie den MCP-Server
Führen Sie unter Windows folgenden Befehl aus:
wsl.exe -d Debian -e bash -c 'export PATH=$HOME/.local/bin:$PATH && pip install --break-system-packages -e /mnt/c/path/to/gdb-multiarch-mcp'Oder innerhalb von WSL:
pip install -e /mnt/c/path/to/gdb-multiarch-mcp3. Zu Claude Code hinzufügen
claude mcp add gdb-multiarch -s user -- wsl.exe -d Debian -e bash -c "export PATH=\$HOME/.local/bin:\$PATH && python3 -m gdb_multiarch_mcp"Oder manuell zu Ihrer .claude.json hinzufügen:
{
"mcpServers": {
"gdb-multiarch": {
"type": "stdio",
"command": "wsl.exe",
"args": [
"-d", "Debian", "-e", "bash", "-c",
"export PATH=$HOME/.local/bin:$PATH && python3 -m gdb_multiarch_mcp"
]
}
}
}4. Überprüfung
claude mcp listSie sollten gdb-multiarch: ... - Connected sehen.
Konfiguration
Setzen Sie diese Umgebungsvariablen in WSL, um die Verbindung anzupassen:
Variable | Standard | Beschreibung |
|
| IP-Adresse des Switch/Yuzu GDB-Stubs |
|
| GDB-Stub-Port |
|
| Pfad zur gdb-multiarch-Binary |
|
| Logging-Level (DEBUG, INFO, WARNING, ERROR) |
Um diese zu setzen, fügen Sie env zu Ihrer MCP-Konfiguration hinzu:
{
"mcpServers": {
"gdb-multiarch": {
"type": "stdio",
"command": "wsl.exe",
"args": ["..."],
"env": {
"SWITCH_IP": "192.168.1.100",
"SWITCH_PORT": "22225"
}
}
}
}Verfügbare Tools
Sitzungsverwaltung
Tool | Beschreibung |
| Verbindung zum Switch/Yuzu herstellen, an das Spiel anhängen, |
| Verbindung trennen und aufräumen |
Switch-Debugging-Tools
Tool | Beschreibung |
| Breakpoint bei |
| NOP-Instruction bei Offset (schreibt |
| Stub-Funktion bei Offset (schreibt |
| Instruction bei Offset durch beliebigen Wert ersetzen |
| PC als Offset relativ zu |
| Absolute Adresse in Offset relativ zu |
| Backtrace als absolute Adressen (Frame-Pointer-Walk) |
| Backtrace mit Offsets relativ zu |
| Kombiniert: PC-Offset + LR-Offset + vollständiger Backtrace |
| Hex-Dump des Speichers |
| 4 ursprüngliche Instructions bei Offset für spätere Wiederherstellung dumpen |
Standard-GDB-Tools
Alle Standard-gdb-mcp-Tools sind ebenfalls verfügbar:
Tool | Beschreibung |
| Beliebigen GDB-Befehl ausführen (CLI oder MI) |
| Breakpoint bei Funktion/Datei:Zeile/Adresse setzen |
| Alle Breakpoints auflisten |
| Breakpoint nach Nummer löschen |
| Breakpoint aktivieren |
| Breakpoint deaktivieren |
| Ausführung fortsetzen |
| Hineinspringen (Step into) |
| Überspringen (Step over) |
| Laufendes Programm pausieren |
| Standard-GDB-Backtrace |
| Threads auflisten |
| Zu Thread wechseln |
| Stack-Frame auswählen |
| Aktuelle Frame-Informationen |
| C/C++-Ausdruck auswerten |
| Lokale Variablen für einen Frame |
| CPU-Registerwerte |
| Funktion im Zielprozess aufrufen |
| Sitzungsstatus |
Fehlerbehebung
"No route to host" bei der Verbindung
WSL-Netzwerke können kompliziert sein. Versuchen Sie Folgendes:
Bestätigen Sie, dass SSH in WSL läuft:
sudo service ssh startKonnektivität testen:
nc -vz <switch_ip> 22225Route hinzufügen, falls erforderlich:
sudo ip route add 192.168.1.0/24 via <gateway_ip>Port-Proxy von Windows PowerShell:
netsh interface portproxy add v4tov4 listenport=22225 listenaddress=127.0.0.1 connectport=22225 connectaddress=<switch_ip>GDB-Stub antwortet nicht
Stellen Sie sicher, dass das Spiel auf Yuzu/Switch läuft, bevor Sie
switch_start_sessionaufrufenÜberprüfen Sie, ob der GDB-Stub von Yuzu unter
Emulation > Configure > Debug > Enable GDB Stubaktiviert ist
Sitzung läuft bereits
Rufen Sie zuerst switch_stop_session auf und dann erneut switch_start_session.
Credits
Ipiano/gdb-mcp von Andrew Stelter — der Upstream-MCP-Server für GDB, auf dem dieses Projekt basiert
Coolsonickirby/smash-ultimate-research-setup — die modifizierte
.gdbinit.switchundattach.py(Auto-Attach-Skript), die in diesem Projekt verwendet werdenblujay — die ursprünglichen
.gdbinit.switch-BefehleGradualSyrup —
print_addr_setup.py(Adress-zu-Offset-Auflösung)Gdbinit von mammon_, elaine, pusillus, mong, zhang le, l0kit, truthix, fG!, gln — die erweiterte
.gdbinit-Konfiguration
Lizenz
MIT — siehe LICENSE.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sbergeron42/gdb-multiarch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server