Pubblicato un nuovo aggiornamento per 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
Questa versione include molte correzioni. In particolare, ManagedProcess è stato sostituito con ShellProcess. Questo risolve i problemi di accesso al filesystem durante l’esecuzione di sysmodule tramite twib run
. Inoltre, la registrazione USB è stata disabilitata per impostazione predefinita. Ciò significa che hbmenu verrà avviato senza USB collegato.
Changelog
Aggiunte
- Aggiunto elenco di librerie allo stub gdb.
- Aggiunti altri comandi del filesystem (#84, #81).
- Aggiunto supporto per la lettura e la scrittura di registri FPU nello stub GDB.
- Aggiunto ShellProcess.
Rimozioni
- Rimosso ManagedProcess.
Cambiamenti
- A questo punto è possibile richiedere la chiusura del processo dell’applet prima dell’avvio.
- Dimensione dello stack del processo dell’applet sollevata.
- Aggiornato per le modifiche di Atmosphere.
- Rifattorizzate molte funzionalità di AppletProcess in ECSProcess e TrackedProcess.
- Registrazione USB disabilitata per impostazione predefinita, poiché confonde le persone.
- Il comando Reboot ora utilizza spsm e riavvia il payload.
- Twili ora mostra meglio le informazioni nella schermata degli errori fatali.
Correzioni
- Corretto il problema con la chiusura degli oggetti USB durante la connessione TCP (#70).
- Aggirato
LIBUSB_ERROR_ACCESS
quando udev è lento nel modificare le autorizzazioni. - Corretto il problema con
HandleReadMemory
che non tornava dopo l’errore (#74). - Corretto il problema con i thread di elaborazione multiprocesso GDB (presumibilmente migliora la compatibilità IDA).
- Corretto il problema con Xcode clang asan build error.
- Corretto il problema con il file di servizio systemd per utilizzare il percorso assoluto.
- Corretto l’errore di percorso
libusb_claim_interface
. - Corretto il problema relativo alla segnalazione degli errori ‘ENN’ dello stub gdb.
- Corretto blockingconcurrentqueue su macOS.
- Corretti diversi deadlock twibd.
- Corretto il problema con MonitoredProcess che ingoiava errori sconosciuti.
- Corretto un problema con la gestione del file
twili.ini
. - Aggirato il debug del PID 0.
Download: Twili – Homebrew Debug Monitor v1.3.0
Fonte: github.com