2012-04-02 31 views
6

Attualmente sto scrivendo un app iOS con Xcode 4.3.2. Nella maggior parte delle parti del mio codice, il debugging con LLDB funziona bene. Tuttavia a un certo punto ricevo uno strano messaggio mentre passo attraverso il mio codice. Quando mi passa il mouse sopra un iVar, si dicemessaggio di errore strano in Xcode 4.3 con LLDB

Errore [IRForTarget]: Impossibile trovare Objective-C simbolo Ivar indiretta OBJC_IVAR _ $ _ MyFancyClass.iVar

invece di mostrare me il valore. Tuttavia, nel numero Variables View, posso vederlo bene. Fino a quando sto selezionando Print Description of ... che è, perché poi, Xcode si blocca ... Quando uso GDB, le opere in bilico, ma il tipo e valori della variabile sono sbagliate.

ho Recon che c'è qualcosa di sbagliato con il mio codice che a sua volta fa sì che il debugger di sicuro. Tuttavia, il codice funziona correttamente. Mi piacerebbe fornire qualche samplecode ma la classe è piuttosto lunga e non riesco a individuare la posizione esatta del mio errore. Quindi qualcuno ha riscontrato un comportamento simile?

UPDATE: In realtà, sembra come se questo accade ovunque nel mio codice, non solo in alcuni file specifici. Se aiuta, mentre LLDB mostra il messaggio precedente, GDB mostra sempre un oggetto della Classe che possiede l'iVar, anziché l'iVar stesso. Sembra che ci sia qualcosa di sbagliato nella gestione della memoria. Per esempio, se dico qualcosa di simile

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA]; 

il selettore viene invocata anche quando ho

[notificationCenter postNotificationName:bar object:objB]; 
+0

Il codice può essere lungo, ma non sembrare abbastanza persone hanno incontrato questo. Puoi solo mostrare una versione riassuntiva di un codice in cui si verifica questo comportamento? –

+0

Beh, visto che succede assolutamente dappertutto nel mio Codice, non so davvero cosa potrei postare ... – Phlibbo

+0

Sto solo indovinando qui quindi non sto postando una risposta, ma cosa succede se provi ad usare il debugger console e stampare l'oggetto usando "po"? Inoltre, hai forse qualche tipo di configurazione gdb speciale in atto? È una libreria inclusa che stai cercando di eseguire il debug? Stai costruendo con le informazioni di debug abilitate? Controlla le impostazioni di compilazione (genera simboli di debug, livello di ottimizzazione, formato delle informazioni di debug). –

risposta

9

La causa di questo errore sono errate impostazioni di generazione, come indicato dalla discussione nei commenti POSTO. Questo problema può essere risolto impostando "Deployment Postprocessing" su NO per Debug-Mode (il valore predefinito).

2

Assicurarsi MyFancyClass.m viene aggiunto al vostro obiettivo

+0

Sfortunatamente, è già:/ – Phlibbo

0

vostro selettore che il NSNotification è stato inviato deve avere un argomento (e solo uno), che è una NSNotification. Quindi, quando si esegue questa operazione:

[notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA]; 

-(void)foo 
{ 

} 

... è necessario fare questo: [notificationCenter addObserver: selettore di auto: @selector (foo :) nome: oggetto bar: objA];

-(void)foo:(NSNotification *)notification 
{ 

} 

Notare i due punti nel selettore per notificationCenter e l'argomento per foo.

+0

Corretto. Tuttavia, quello era solo io, avendo un refuso nel mio pseudo-codice. Ricorda, il vero problema sono gli strani avvisi del debugger :) La notifica – Phlibbo

+0

(NSNotification) dovrebbe essere la notifica (NSNotification *) – braden