2016-06-11 18 views
6

Quando eseguo la mia app Swift in Xcode 7.3.1 (con il compilatore Swift 2 standard) e le pause di esecuzione in un punto di interruzione, Non riesco a controllare le variabili con il comando po. La prima volta che eseguo po exists (exists è una variabile Bool non facoltativa nell'ambito corrente) Viene visualizzato un messaggio di errore lungo (vedere di seguito). Dalla seconda volta che eseguo lo stesso comando in poi, ricevo il messaggio error loading helper function: (null).Non riesco a controllare le variabili con "po" nel mio progetto Swift 2 usando Xcode 7.3.1 - errore caricamento funzione helper

L'app è compilata ed eseguita sullo schema di debug, senza "ottimizzazione post-elaborazione" e nessuna [-O0] ottimizzazione.

I contenuti delle variabili vengono visualizzati correttamente nel pannello dell'ispettore variabile di Xcode.

Lo stesso errore appare con po self o qualsiasi altra variabile sia in esecuzione sul dispositivo che sul simulatore iOS.

Se si esegue un nuovo progetto pulito, il debugging con po funziona correttamente.


In ambito corrente:

var exists: Bool = self.canRemoveAttachmentForEpisode(episode) 
NSLog("Exists is now \(exists)") // Breakpoint is set here 

Questo è ciò che accade nel pannello debugger:

po exists 
error loading helper function: <EXPR>:141:9: warning: '--' is deprecated: it will be removed in Swift 3 
     --maxItemCounter 
     ^~ 
         -= 1 
<EXPR>:237:14: warning: '++' is deprecated: it will be removed in Swift 3 
      i++ 
      ^~ 
       += 1 
<EXPR>:267:19: warning: 'init(start:end:)' is deprecated: it will be removed in Swift 3. Use the '..<' operator. 
     let rng = Range(start: si, end: ei.advancedBy(-1)) 
       ^
<EXPR>:280:9: warning: initialization of variable '$__lldb_error_result' was never used; consider replacing with assignment to '_' or removing it 
    var $__lldb_error_result = __lldb_tmp_error 
    ~~~~^~~~~~~~~~~~~~~~~~~~ 
    _ 
<EXPR>:89:41: error: 'CustomStringConvertible' is ambiguous for type lookup in this context 
        if let csc = (x as? CustomStringConvertible) { 
             ^~~~~~~~~~~~~~~~~~~~~~~ 
Swift.CustomStringConvertible:13:17: note: found this candidate 
public protocol CustomStringConvertible { 
       ^
Castamatic.CustomStringConvertible:1:17: note: found this candidate 
public protocol CustomStringConvertible { 
       ^
<EXPR>:101:41: error: 'CustomStringConvertible' is ambiguous for type lookup in this context 
        if let csc = (x as? CustomStringConvertible) { 
             ^~~~~~~~~~~~~~~~~~~~~~~ 
Swift.CustomStringConvertible:13:17: note: found this candidate 
public protocol CustomStringConvertible { 
       ^
Castamatic.CustomStringConvertible:1:17: note: found this candidate 
public protocol CustomStringConvertible { 
       ^


(lldb) 



(lldb) po exists 
error loading helper function: (null) 

(lldb) 

risposta

1

ho risolto il problema. Il problema è stato che stava ridefinendo un protocollo esistente:

protocol MyCustomStringConvertible {} 

extension MyCustomStringConvertible where Self: RawRepresentable, Self.RawValue == String { 
    .. 
} 

ho ridefinito il protocollo CustomStringConvertible, o forse CustomStringConvertible di Apple non esisteva quando ho scritto la mia versione di esso. Probabilmente il protocollo viene utilizzato solo da po durante il debug, quindi l'errore non è mai uscito in fase di esecuzione.

Il mio unico dubbio è questo: il compilatore non dovrebbe avvisarmi di aver ridefinito un protocollo esistente?

Problemi correlati