Pubblicata una seconda preview della versione 1.4.0 di Twili, il monitor di debug personalizzato sviluppato dal team ReSwitched per console Nintendo Switch.
L’aspetto del monitor di debug mira a fornire una sana soluzione per stdio e logging, al punto da facilitarne lo sviluppo generando rapporti sugli arresti anomali e consentendo il debug delle applicazioni in esecuzione.
L’aspetto del bridge di debug mira a fornire utilità simili a ADB, consentendo un sideload rapido e conveniente.
Caratteristiche
- Questo strumento consente di inviare e avviare homebrew tramite USB (o TCP).
- Se l’applicazione homebrew è compatibile, ti permette di avere anche stdin/stdout/stderr su USB, tramite lo strumento da riga di comando. Ciò consente un ciclo di sviluppo più rapido.
- Se non hai bisogno che il tuo homebrew sia un’applet (stai sviluppando un sysmodule in background), puoi ridurre ulteriormente i tempi di iterazione prevenendo errori fatali quando il sysmodule si arresta inevitabilmente.
- Puoi utilizzare GDB per eseguire il debug dell’applicazione homebrew (applet, sysmodule, ecc…) o persino software ufficiale.
- Quando qualcosa si arresta in modo anomalo, puoi generare un dump del core ELF che puoi caricare nel debugger (aarch64-linux-gnu-elf) per aiutarti a capire cosa è andato storto invece di dover spegnere la console, rimuovere la scheda SD , cercare il registro degli arresti anomali e utilizzare addr2line per trasformarlo in qualcosa di significativo.
- Ho già detto che puoi eseguire il dump core di qualsiasi processo e non solo di homebrew?
- Ti consente di interrogare l’utilizzo complessivo della RAM sulla console.
- Ti consente di ottenere un elenco di tutti i processi in esecuzione sulla console e …
- Ti permette anche di terminarli.
- Se il debug di basso livello è il tuo stile, ti consente anche di eseguirne il debug. A partire dalla 1.2.0, c’è persino uno stub GDB.
FAQ
Domanda: Come posso usare l’IO standard di Twili?
Risposta: Se stai utilizzando libtransistor, lo ottieni gratuitamente. Se stai utilizzando libnx, puoi collegarti a libtwili (disponibile all’interno della repository twili-libnx). Se avvii l’applicazione tramite twib run, stdout/stderr andrà alla tua console e stdin proviene da quella console. Se si avvia in altro modo, stdout/stderr passerà ai registri twibd e stdin si bloccherà.
Domanda: In cosa differisce da nx-hbloader/nxlink?
Risposta: Oltre ad avere molte più funzioni, esegue ogni homebrew nel proprio processo, che è una tabula rasa tranne un piccolo stub che fornisce le chiavi HBABI. Ciò significa che l’homebrew può gestire la propria memoria e non deve preoccuparsi di ripulire completamente dietro se stesso per la prossima applicazione.
Domanda: Ha uno stub GDB?
Risposta: A partire dalla versione 1.2.0, sì! Consultare il README all’interno della repository github per ulteriori istruzioni.
Domanda: Su quali versioni del firmware funziona?
Risposta: Per quanto ne so, tutte. Il firmware 1.0.0 potrebbe comportarsi in modo leggermente diverso rispetto agli errori irreversibili di arresto anomalo del sistema.
Domanda: Su quali CFW funziona?
Risposta: L’unico CFW su cui posso confermare la funzionalità e supportare attivamente è Atmosphère, e solo versioni un po’ recenti (0.10.2+). Twili è stato testato su Atmosphère 0.10.2. Twili potrebbe funzionare su altri CFW con alcune modifiche.
Domanda: Cosa devo sapere prima di installarlo?
Risposta: Sostituisce nx-hbloader. Ciò significa che sostituisce hbl.nsp
. Se non ti piace Twili e vuoi rimuoverlo, non dimenticare di rimettere hbl.nsp
di nx-hbloader.
Domanda: Come posso installarlo?
Risposta: Vedere le istruzioni di installazione all’interno della repository GitHub.
Domanda: Qual è la versione più recente?
Risposta: La versione più recente è Twili 1.3.0. Aggiorna anche Twib ad ogni versione, poiché sono incluse correzioni di bug.
Changelog v1.4.0-pre2
Aggiunte
- Aggiunto un watchdog per ottenere, si spera, una visione migliore dei deadlock del sysmodule.
- Aggiunta la ricerca del codice di errore a twib (
twib err
).
Cambiamenti
- I core dump non includono più i mapping IO.
- AppletTracker ora rinvia la lettura di hbmenu fino a quando non è necessario, quindi puoi eseguire Twili senza hbmenu e non si bloccherà.
- Aggiornato libtransistor.
Correzioni
- Corretto il problema con USBBridge su firmware 11.0.0+.
Changelog v1.4.0-pre1
Aggiunte
- Aggiunta integrazione launchd per twibd (grazie a
@liuervehc
). - Aggiunta la classe SystemVersion per il monitoraggio delle versioni del firmware.
- Aggiunto supporto per il firmware 10.0.0 (PGL).
- Aggiunto output più dettagliato per le chiamate ITwibDebugger.
- Aggiunto “none” alle posizioni di archiviazione comprese dal lancio di twib (grazie a
@averne
). - Aggiunto il comando twib-get-module-info.
- Aggiunto il comando “monitor get base” a gdb stub.
Rimozioni
- Rimosso il modulo process_creation ormai obsoleto.
- Rimosso il titolo 0100000000006482 Hack ECS (non più necessario).
Cambiamenti
- Aggiornato a c++ 20.
- Spostata la maggior parte del codice di servizio in
Services.cpp
, basato sulla versione del firmware. - Ricostruito il codice di gestione degli errori per non utilizzare le eccezioni.
- Resa la confusione ECS un errore critico.
- Aggiunto output ShellTracker al debug di twib.
Correzioni
- Corrette le risposte a 0 byte (grazie a
@comex
). - Corretto il problema con il file di unità systemd per twibd.
- Corretto il problema della riga di comando di esecuzione di twib (“Managed process has been removed.”).
- Corretto il problema con ShellTracker che riceveva notifiche di processo sul thread sbagliato.
- Corretto il problema con l’uccisione e l’interruzione dei processi di avvio sospesi.
- Corretto il problema con la risposta LaunchProgram.
- Corretto l’ordine di distruzione di ITwibDebugger wait_handle.
- Corretto il problema con la logica non sicura del riavvio invertito.
Download: Twili – Homebrew Debug Monitor v1.4.0-pre2
Download: Twibd Linux64
Download: Twib Linux64
Download: Source code Twili – Homebrew Debug Monitor v1.4.0-pre2
Fonte: github.com