2010-07-12 8 views
11

Sto eseguendo il debug di un'app per iPhone Sto scrivendo in Xcode, ma a volte ora il debugger (che è GDB) rallenta molto (facendo un debugging passo-passo) e diventa a volte non risponde (le icone per l'introduzione, il passaggio e l'eliminazione non sono selezionabili), dopo che a volte si ritorna alla normalità e continua e altre volte rimane così per sempre o viene visualizzato un messaggio nella console: "Tempo scaduto" (o qualcosa di simile) e posso vedere la mia CPU dal monitor dell'attività fino al 90%. Come soluzione temporanea, ho usato per mettere un brekpoint dopo la riga di codice che mi interessava e sono andato semplicemente con 'Continua' a 'Continua' (facendo ciò funziona perfettamente bene e velocemente). Può dipendere dal codice? C'è un modo per eseguire il debug del debugger (comportamento)?Il debug di Xcode con l'app per iPhone è lento e lento

UPDATE: Il messaggio completo è

Timed out fetching data. Variable display may be inaccurate. 

usare Google per essa ho scoperto che succede quando Xcode gdb sta cercando di guardare dentro formattatori di dati. Qualcuno ha suggerito di disabilitare Esegui> Vista variabile> Usa formattatore dati (in xcode 3.2, precedente suppongo che sia Debug-> Variabili Visualizza-> Abilita formattazione dati) e sembra funzionare anche per me (fino ad ora) Quindi ora I sto chiedendo: perché? : D

UPDATE2: Questo ha risolto il debugger da arresto su una parte specifica del codice ma stil blocca (con lo stesso messaggio) in un'altra chiamata. Mi sembra che questo comporta alcune API CoreData come (NSEntityDescription*)entityForName: inManagedObjectContext:

Update3: sarebbe meglio mettere in cache l'NSEntityDescription invece di creare sempre una nuova?

+0

Accade in tutti i punti del codice? Puoi controllare se questi codici consumano molto? Non ne ho mai sofferto prima. Che ne dici dei tuoi dettagli hardware, del tuo attuale Mac OS e del tuo attuale XCode? – vodkhang

+0

Eseguo Xcode 3.2.2 con iPhone SDK 4 su un iMac 2009 con Mac OS X SL 10.6.4. Ora eseguirò qualche test su un altro pezzo di codice, ma su quel pezzo specifico si comporta in questo modo non sempre. – rano

+0

Ecco il messaggio specifico: "Tempo scaduto durante il recupero dei dati. La visualizzazione variabile potrebbe essere inaccurata." – rano

risposta

0

Prova a eseguire il codice in Strumenti. Questo potrebbe essere un problema di memoria, quindi controlla il tuo utilizzo in Strumenti mentre il codice viene eseguito. Quando arrivi alla parte in cui diventa sempre meno reattivo, dovresti vedere l'utilizzo della memoria salire e poter risalire da lì in Strumenti.

Spero che questo aiuti!

+0

Sembra normale all'interno degli strumenti. Ho notato, come detto nel post, che questo accade con l'API di Core Data. – rano

0

ho avuto un stesso problema e ho risolto disattivando l'opzione "Run " - "abilitare/disabilitare Guardia Alloc" in xCode. Ora funziona così velocemente! Controlla se hai abilitato questa opzione e disabilitala.

Spero che aiuti! : D

+0

Grazie, ma ** Guard Malloc ** è sempre stato disabilitato nel mio progetto. Inoltre, il tipo di lentezza che produce è "corretto" e diverso da quello che stavo vivendo (il mio debugger era completamente appeso) – rano

0

Ho anche affrontato lo stesso problema non appena ho migrato a xCode 3.2. Ho usato xcode 3.0 e 2.0, non ho mai affrontato questo problema in quegli SDK. Quindi penso che questo sia un problema con il nuovo SDK.

0

Stai scrivendo un sacco di cose sulla console? Nella mia esperienza, rallenta pesantemente tutto.

+0

ehm non è così, se leggi attentamente la domanda – rano

+1

Ma darò un suggerimento a quelli chi * sta * scrivendo molto alla console: Avere una ricerca attiva nella console rallenta davvero le cose. Chiudi la linea di ricerca ogni volta che non la usi. (E prova molto duramente a non aprire mai la linea di ricerca quando il programma sta scrivendo attivamente sulla console - può diventare seriamente impantanato.) –

0

Sono molto nuovo al debug di Xcode, ma mentre facevo la mia ricerca sono incappato in this question che potrebbe essere utile al tuo problema.

Fondamentalmente ci sono due persone che hanno avuto molti problemi con il debug di xcode e l'OP ha risolto il problema con un'installazione pulita.Citando LucasTizma s' 4 ° edit:

finalmente riusciti debug dispositivo di funzionare. Ho la sensazione che qualcosa di livello basso sul mio dispositivo stia causando problemi ... niente che abbia funzionato sul mio sistema . Tuttavia, ho installato Xcode su un altro debug di sistema e dispositivo su lo stesso dispositivo (con lo stesso cavo) funzionava perfettamente. Subito dopo il , il debug del dispositivo ha iniziato a funzionare con il sulla mia macchina originale, portandomi a e credo che qualche strano contrassegno dell'hardware sia stato avvitato e in qualche modo "ripristinato" sulla seconda macchina. In ogni caso , ora funziona.

+0

non si tratta di debugging dei dispositivi, ma di debug di simulazioni. Inoltre ha alcune condizioni più o meno rigorose in base alle quali è accaduto come indicato nella domanda – rano

+0

@rano Sono d'accordo ... Comunque mi accenna o Xcode ha alcuni bug strani o non è così semplice da usare come è pubblicizzato, che porta la gente a pensare che sia bug e "resettaggio" lo risolva. Immagino che il mio punto qui fosse che tu lo provassi e almeno configurassi lo stesso su una macchina diversa e pulita e vedi se il tuo problema persiste. – cregox

+0

@Cawas Ho già provato a pulire e installare anche se non su una nuova macchina dato che ho solo questo: D – rano

1

Ho avuto lo stesso problema e ha trovato qualche risposta relative su di discussione Apple:

Una causa comune di problemi sta cercando di eseguire i formattatori di dati sugli oggetti non inizializzati. Non abbiamo in realtà alcun modo per dire con certezza quando un oggetto è buono o no. Abbiamo alcune euristiche, ma gli oggetti stack a volte indicano gli avanzi di un altro oggetto stack che sono "abbastanza buoni" e ci ingannano. Un trucco che può essere d'aiuto è quando si interrompe una funzione, si interrompe dopo l'inizializzazione degli oggetti, non all'inizio della funzione.

+1

Sembra interessante, potresti collegare la tua fonte? – rano

1

Quindi nessuno ha una risposta per questo? In un breve test, la formattazione potrebbe aver aiutato (ma il sintomo è così casuale che è difficile dirlo con certezza). E il debugger è quasi inutile senza formattazione.

0

Ho osservato un debug molto lento quando "Coda debug" è abilitato nello schema. Se non è necessario il debug della coda, prendere in considerazione la disabilitazione.