2016-06-11 1 views
6

Wenn ich meine Swift-App in Xcode 7.3.1 (mit Standard-Swift 2-Compiler) ausführe und die Ausführung an einem Haltepunkt pausiert, Ich kann Variablen mit po Befehl nicht überprüfen. Das erste Mal, dass ich po exists (exists ist eine nicht-optionale Bool-Variable im aktuellen Umfang) laufen lasse ich eine lange Fehlermeldung (siehe unten). Ab dem zweiten Mal, nachdem ich denselben Befehl ausgeführt habe, erhalte ich die Nachricht error loading helper function: (null).Variablen mit "po" können in meinem Swift 2-Projekt nicht mit Xcode 7.3.1 überprüft werden - Hilfsfunktion zum Laden von Fehlern

Die App wird kompiliert und im Debug-Schema ausgeführt, ohne "Deployment Post Processing" und None [-O0] -Optimierung.

Variableninhalte werden im Variableninspektorbereich von Xcode korrekt angezeigt.

Derselbe Fehler wird mit po self oder einer anderen Variablen angezeigt, die beide auf dem Gerät und dem iOS-Simulator ausgeführt werden. Wenn ich ein neues sauberes Projekt ausführe, funktioniert das Debuggen mit po korrekt.


Im aktuellen Bereich:

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

Dies ist, was in dem Debugger-Panel passiert:

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) 

Antwort

1

ich das Problem gelöst. Das Problem war, ich wurde neu definiert ein vorhandenes Protokoll:

protocol MyCustomStringConvertible {} 

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

ich neu definiert CustomStringConvertible Protokoll oder vielleicht Apples CustomStringConvertible nicht existierte, als ich meine eigene Version davon geschrieben. Wahrscheinlich wird das Protokoll nur von po beim Debuggen verwendet, so dass der Fehler nie zur Laufzeit kam.

Mein einziger Zweifel ist dies: sollte nicht der Compiler mich für die Neudefinition eines bestehenden Protokolls alarmieren?