2013-02-25 17 views
11

Sto districando il codice degli spaghetti e come esercizio sto percorrendo l'applicazione dal suo avvio, interrompendola su applicationDidFinishLaunching e scavalcando.Come posso interrompere tutti i codici simbolici in Xcode 4.6?

Quando viene restituito questo primo metodo, viene quindi eseguito il montaggio. Sapere quando calpestare e quando intervenire è un vero dolore. Voglio che il debugger metta in pausa tutto il codice simboleggiato (cioè il codice che posso vedere in Xcode - forse questo è chiamato codice "utente"? Fondamentalmente, non framework/codice libreria.), Ma non mi importa dei metodi interni di Apple.

Sto cercando l'equivalente pratico di impostare un punto di interruzione sulla prima riga (o ogni riga) di ogni metodo e funzione che io (o il mio predecessore) ha scritto.

C'è qualche voodoo della LLDB che lo farà?

risposta

7

C'è un modo semplice per configurare punti di interruzione su tutti i moduli funzioni, esclusi quelli di qualsiasi altra libreria condivisa (framework di Apple), supponendo che il prodotto/modulo è chiamato 'MyApp' che sarebbe:

breakpoint set -s MyApp -r . 

Tuttavia, questo include include qualsiasi libreria a cui è stato collegato staticamente, il che probabilmente significa qualsiasi libreria che è stata introdotta dal momento che il collegamento dinamico non è consentito nell'App Store.

Se tendi a precludere le tue classi, puoi restringere i risultati interrompendo solo le funzioni che fanno parte delle classi con quel prefisso. Supponendo che il tuo prefisso sia 'MA' puoi fare qualcosa del tipo:

breakpoint set -s MyApp -r ^[^A-Za-z]*MA 

che dovrebbe coprire la maggior parte del tuo codice.

+0

Ottima risposta, grazie gentilmente. Per riferimento ad altri, '-s' limita i breakpoint a una libreria condivisa, e' -r' indica una espressione regolare per abbinare le funzioni su cui interrompere. – Swizzlr

+0

Punti bonus importanti se esiste un modo per ignorare i metodi di accesso alle proprietà sintetizzati. – Swizzlr

Problemi correlati