2012-12-18 16 views
6

Sto usando Xcode 4.5 su Mac con il simulatore iOS per scrivere app per iPhone. Quando colpisco un breakpoint nel debugger, utilizzo "Auto" per esaminare le variabili. Il problema è che gli oggetti sono inizialmente tutti piegati e devo espandere ciascuno per vedere il suo valore. Va bene, ma è noioso e difficile da leggere. C'è un modo per PERSONALIZZARE il modo in cui i dati sono presentati nel debugger?Come migliorare la visualizzazione delle variabili che sono oggetti nel debugger xcode 4.5 (noob)

Ho guardato a LLDB tutorial e ho guardato "stringhe di riepilogo personalizzate" in the post da Quinn Taylor, ma non lo capisco. Deve aver usato una versione precedente di xcode.

Fondamentalmente, ho un oggetto come

classe Vec3 { pubblico: float x, y, z; };

e nella finestra di debug vedo

pos (Vec3) 

e quello che preferirei vedere è

pos = (Vec3) (x=45.2, y=10.7, z=2.0) 

senza dover espandere la variabile. Qualcuno sa come posso farlo?

risposta

2

Se Vec3 è la vostra classe (o qualcosa che potete sottoclasse), sovrascrivete il suo description. Ciò ti consente di formattare ciò che appare quando dici po pos nella console.

Per ottenere fantasiosi, consultare questa pagina:

http://lldb.llvm.org/varformats.html

Si può dire

type summary add --summary-string 

seguito da una stringa descrittiva di come si desidera visualizzare questo tipo di variabile.

Se vuoi davvero entrare nel nocciolo della questione, puoi scrivere il tuo formattatore; buona discussione nei due video del WWDC 2012 su debugging e LLDB. Ma devi scrivere uno script Python per farlo, quindi ho dato più di una soluzione "noob".

+0

Sì, posso modificare Vec3. Il messaggio "descrizione" funziona bene per Objective-C, ma non C++. E funziona solo nella finestra della console. Speravo di essere in grado di personalizzare la finestra dell'orologio. In MS Studio puoi farlo molto bene con il file "autoexp.dat". –

+0

Ehi! Ho appena trovato una [ottima pagina web] (http://disanji.net/iOS_Doc/#documentation/DeveloperTools/Conceptual/XcodeDebugging/220-Viewing_Variables_and_Memory/variables_and_memory.html) che spiega come è possibile creare formattatori personalizzati per le strutture (come CGRect) modificando 'CustomDataViews.plist' ... Purtroppo Apple l'ha rimosso ... almeno, non riesco a trovarlo da nessuna parte. –

+0

"Speravo di essere in grado di personalizzare la finestra di controllo", sì, beh, questo è lo scopo dello script Python. Lo scrivi, lo aggiungi tramite il tuo file ~/.lldbinit, tutto è pronto. – matt

7

Sono riuscito a farlo funzionare con xcode 4.5.2. Per riassumere, questi sono i passaggi.

  1. aprire o creare ~/.lldbinit utilizzando editor di testo e aggiungere la riga

    type summary add Vec3 --summary-string "x=${var.x}, y=${var.y}, z=${var.z}" 
    
  2. riavviare Xcode. Ora, quando si colpisce un punto di interruzione la Vec3 verrà visualizzata come,

    pos (Vec3) x=1, y=3.125, z=9.5 
    

si può fare un sacco di altre cose in.lldbinit come descritto in http://lldb.llvm.org/varformats.html

Per esempio

type summary add Vec3 --inline-children --omit-names 

si auto-generare una stringa di sintesi e

type summary add --inline-children -x "Vec[:alnum:]*" 

si auto-generare stringhe di sintesi per tutti i tipi che iniziano con "Vec".

+0

Un altro bocconcino utile. È possibile fare doppio clic sulla variabile nella finestra di controllo e viene visualizzata una finestra popup denominata "Imposta formato di riepilogo per tipo" in cui è possibile personalizzare temporaneamente la stringa di riepilogo del tipo. Tuttavia, la sintassi sembra essere leggermente diversa dal "riepilogo del tipo aggiungi ..." –

Problemi correlati