2014-10-29 21 views
6

Sto vedendo uno strano comportamento con il debugger Xcode 6. Ho creato un Singleton condiviso esempio utilizzando il seguente codice:Xcode 6 strano (nullo) display nel debugger

+ (instancetype)shared 
{ 
    static DataBaseManager *sharedInstance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    sharedInstance = [[DataBaseManager alloc] init]; 
    }); 

    return sharedInstance; 
} 

Subito dopo l'oggetto viene inizializzato chiamando il metodo come questo:

DataBaseManager *manager = [DataBaseManager shared]; 
NSLog(@""); 

ho messo un punto di interruzione sul "NSLog" , e sto vedendo il seguente stato debugger:

Xcode 6 debugger screen capture

mi sono assicurato sto lanciando su di debug modalità, e che le impostazioni di costruzione vanno bene, seguendo la domanda qui: Xcode debugger doesn't print objects and shows nil, when they aren't

Qualche idea sul perché questo sta accadendo? Questa è la prima volta che ho mai visto questo tipo di comportamento strano. Qualsiasi aiuto sarebbe molto apprezzato.

**UPDATE** 

A bug was reported to apple bug report system. 
The bug status is: Duplicate of 17164538 (Closed) 

so it is probably a known bug in Xcode. 
+2

La mia esperienza con la visualizzazione del debugger Xcode è che è piuttosto fragile. La cosa su cui puoi fare affidamento è la shell LLDB sulla destra. Ad esempio, 'po manager',' po manager -> _ databasePath', ... Se si riscontrano problemi coerenti, si consiglia di presentare una segnalazione di bug con Apple, comunque. – DarkDust

+0

@DarkDust 'po manager' stampa l'indirizzo di memoria di 'manager'. tutto funziona, ma questo problema è frustrante. Grazie. – Raz

+0

Le informazioni sullo schermo delle variabili Xcode sono spesso inutili. Ogni volta che si sospetta che usi 'p' e' po'. Risparmierai un sacco di tempo (Inoltre, ovviamente, 'NSLog (@" ");' non ti mostrerà nulla e se questo doveva essere il * solo * riferimento a 'manager', allora è probabile che sia stato gettato dall'ottimizzatore.) –

risposta

2

Try setting Deployment Postprocessing to NO inside your Build Settings and check.

+0

assicurati che sia impostato su NO. proprio come indicato nel link di riferimento alla domanda: http: // stackoverflow.it/questions/19870176/xcode-5-debugger-doesnt-print-objects-and-shows-nil-when-they-arent – Raz

+0

A volte questo non è sufficiente per evitare l'errore: "Impossibile materializzare: non è stato possibile ottenere il valore della variabile VARIABLENAME: variabile non disponibile Errored out in Execute, could not PrepareToExecuteJITExpression " –

4

Non si dovrebbe essere in Release mode durante il debug del codice.

Se si desidera visualizzare i valori delle variabili, è necessario immettere Debug mode. I passi sono

  1. Clicca sul nome del progetto in alto a sinistra nei pressi di avvio pulsanti/stop
  2. Go in Edit scheme
  3. Go in Run impostazioni
  4. Go in Info tab e poi Build Configuration
  5. Set a Debug

Se era su "Rilascio" che E 'la questione che hai visto tutto nullo. Se ancora non funziona quindi provare a seguito del progetto Build Settings

  1. Impostare Strip debug symbols during copy-NO
  2. Optimization Level a None -O0
+1

awesome man (Y) –

+0

Felice di sapere che ti ha aiutato. – Ans

2

Assicurarsi di avere Link-Time Optimization impostato su No per la modalità di debug in Impostazioni costruire.

+0

Questo ha funzionato per me! Xcode 8.1 beta debug di iOS 10.1 beta. –

Problemi correlati