Chisel (scalpello) è il nome di un progetto OpenSource rilasciato da Facebook utile durante il debug di applicazioni iOS e OS X.
Facebook non è nuova nel mondo dei progetti OpenSource e infatti il suo profilo GitHub è pieno di repositories interessanti, primi su tutti la sua libreria per le animazioni POP (facebook pop) e il tool per la compilazione dei progetti Xcode da command line xctool (facebook xctool).
Un’aspetto poco conosciuto di LLDB (il nuovo debugger che ha sostituito GDB qualche tempo fa) è che è scriptabile, cioè è possibile scrivere degli script in python per aggiungervi nuove funzionalità. Se avete voglia e tempo potete partire dalla pagina ufficiale e crearvi il vostro set di strumenti, oppure… potete usare chisel 🙂
L’installazione di chisel è automatica a patto di aver instatto precedentemente hombrew e se non l’avete fatto correte a farlo!
Per installare chisel, da riga di comando digitate:
brew update; brew install chisel
L’output di questo comando dovrebbe darvi informazioni sufficienti sul prossimo step da seguire, in ogni caso dovrete creare un file di testo nella vostra home con il nome di
.lldbinit
Questo file viene letto ed eseguito da LLDB al suo avvio, quindi digitiamo all’interno del file solo una riga per specificare il path dove trovare tutti gli script installati con chisel:
command script import /usr/local/opt/chisel/libexec/fblldb.py
La configurazione è adesso terminata, ma chisel sarà disponibile solo dal prossimo riavvio di xcode.
Qualche esempio di utilizzo
Abbiamo detto che chisel aggiunge funzionalità a LLDB, per provarlo vi consiglio di avviare un vostro progetto con un breakpoint all’interno di un metodo come viewDidAppear:
Una volta interrotta l’escuzione del programma aprite la console e dovreste vedere il prompt di LLDB in attesa di un comando:
Per ottenere l’elenco completo dei comandi disponibili digitate:
help
dovreste vedere un lungo elenco di comandi predefiniti e in calce un elenco di “user-defined commands” che sono i comandi aggiunti da chisel.
Per avere maggiori informazioni su ciascun comando digitate
help nome_comando
Ad esempio questo è l’output se digitate “help visualize”:
(lldb) help visualize Open a UIImage, CGImageRef, UIView, or CALayer in Preview.app on your Mac. Arguments: ; Type: (id); The object to visualize. Syntax: visualize
Sembra interessante! proviamo a digitare:
visualize self.view
Come risultato vedremo la view del nostro viewcontroller (o qualsiasi altra view, CALayer etc) renderizzata in png e aperta con Anteprima 😮
Un’altro comando molto interessante è taplog. Una volta digitato questo comando il programma riprenderà la sua normale esecuzione, per interrompersi nuovamente al prossimo tap sullo schermo e mostrando in console la view che è stata tappata.
Tutti i comandi hanno uno scopo ben preciso e insieme costituiscono un vero coltellino svizzero, ci cono comandi per aggiungere/rimuovere un bordo da una view (border/unborder), comandi per visualizzare la gerarchia completa delle views (pviews) o dei viewcontroller (pvc):
Se la cosa vi ha stuzzicato la fantasia, chisel offre anche la possibilità di aggiungere nuovi comandi a LLDB in modo più semplice rispetto a scrivervi uno script completo da zero, a tal proposito date un’occhiata alla documentazione ufficiale (docs).
Buona divertimento a tutti, alla prossima!














No Responses to “Chisel: il coltellino svizzero del debug iOS e OS X”