[Scena Switch] Rilasciato Twili – Homebrew Debug Monitor (ora con stub GDB) v1.3.0

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

(Visited 1 times, 1 visits today)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *