web-dev-qa-db-de.com

Befehl fehlgeschlagen wegen Signal: Abbruchfalle: 6

Seit Xcode 7 und Swift 2.0 bekomme ich den obigen Fehler, wie im Screenshot gezeigt:

enter image description here

Ich habe keine Ahnung, woher das kommt, das Bereinigen und Löschen abgeleiteter Daten hat nicht funktioniert.

Wer sonst hat dieses Problem?

projekt:

enter image description here

ziel:

enter image description here

32
swalkner

Ich habe das gleiche Problem mit allen Xcode 6.3-Projekten, die ich in Xcode 7.0 öffne. Ich habe ein neues Projekt erstellt, alle meine Quelldateien und Ressourcen kopiert und alles funktionierte ohne diesen Compiler-Fehler. Ich dachte, das hat etwas mit den Projekteinstellungen zu tun. Ich habe die Swift Compile Optimization auf "none" abgeschaltet und die Trap 6 war weg. Vielleicht gibt es andere Einstellungen, die auch Probleme verursachen, aber für mich war es das.

5
j.s.com

Gehe zum Projekt Build settings -> Swift Compiler - code generation -> Optimization Level> Wählen Sie für Debug & Release die Option "Schnelle Optimierung einzelner Dateien [-O]

enter image description here

4
S_iOS

In meinem Fall

Error

override func observeValueForKeyPath(keyPath: (String!)?, ofObject object: (AnyObject!)?, change: ([NSObject : AnyObject]!)?, context: UnsafeMutablePointer<Void>)

Ok

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [NSObject : AnyObject]?, context: UnsafeMutablePointer<Void>)
2
hunjuly

Das hat für mich funktioniert, also probiere es einfach aus. Ich habe diese Fehlermeldung erhalten, als ich den Code von Swift 3 nach Swift 4 konvertierte. 

Gehen Sie einfach zu Project> Target> Build Setting und suchen Sie nach "Swift Compiler - Code Generation", und setzen Sie die Optimierungsebene auf "No Optimazation [-Onone]".

1
Rupak Shakya

In meinem Fall,

Der Compiler würde mir die Nachricht geben:

Incorrect number of arguments passed to called function!
%4 = call %Swift.type* @_T015SimplifiedCoder6StructVMa() #1, !dbg !3112
<unknown>:0: error: fatal error encountered during compilation; please
file a bug report with your project and the crash log
<unknown>:0: note: Broken function found, compilation aborted!

mir wurde jedoch klar, dass ich einen Standardparameter verpasst hatte:

class Class<K> {
    init<T: Protocol>(_ value: T) where T.Key == K {}
}

protocol Protocol {
    associatedtype Key
    static func getClass<NewKey>(_: NewKey.Type) -> Class<NewKey>
}

struct Struct<K>: Protocol {

    typealias Key = K

    static func getClass<NewKey>(_: NewKey.Type) -> Class<NewKey> {
        let _self = Struct<NewKey>()
        return Class(_self)
    }
}

protocol CanGetClass {
    associatedtype StructType: Protocol
}

extension CanGetClass {
    func getClass<Key>(_: Key.Type) -> Class<Key> {
        return StructType.getClass(Key.self)
    }
}

struct R: CanGetClass {
    typealias StructType = Struct
}

geändert: 

typealias StructType = Struct

zu: 

typealias StructType = Struct<Int>

die Erweiterung von CanGetClass hat versucht, getClass für einen unvollständigen Typ aufzurufen.

1
BMH500

Stellen Sie sicher, dass Sie kein privates Protokoll in die Klassenerweiterung implementieren. Die meiste Zeit wäre ziemlich seltsam, ein privates Protokoll zu haben, aber nicht notwendig, je nachdem, was Sie einkapseln möchten.

So etwas in derselben Datei:

class C: ... {
}

extension C: P {
}

private protocol P: class {
}

Tun Sie dies und Sie werden sicherlich Command failed due to signal: Abort trap: 6 bekommen

Entfernen Sie stattdessen den Modifizierer private aus dem Protokoll, und der Fehler ist behoben.

1
Bogdan

Ich habe diesen Fehler auch in XCode 7 Beta 5 erhalten. Nachdem ich den Build gesäubert habe, wurde ein weiterer Fehler angezeigt, der besagte, dass eine meiner Klassen nicht dem Protokoll entspricht, das ich gerade geändert habe. Nachdem ich das Problem behoben habe, wird es erstellt. Die von mir vorgenommenen Protokolländerungen betreffen zwei Parametertypen einer Methode von Int in Int32

1
Zhao

Ich habe dies erhalten, als das getan hat:

protocol ProtocolA {
    associatedtype BType: ProtocolB
}

protocol ProtocolB {
    associatedtype AType: ProtocolA
}
1

Ich habe dieses Problem mit diesen Schritten behoben:

  1. lief 'pod deintegrate'

  2. Machen Sie eine Pod-Datei wie folgt: Plattform: IOS, '8.0' use_frameworks!

  3. lief 'pod install'

1
QL M

Dies hat den Fehler für mich verursacht.

Vor:

    for (key,value) in hash{
        count += value.count
    }

Nach dem:

    for (_,value) in hash{
        count += value.count
    }

Es gefiel nicht, dass der Schlüssel nirgends benutzt wurde. Ich bin nicht sicher, warum der Build fehlschlagen sollte.

0
boidkan

In Xcode 9.3 habe ich den spezifischen Pod erneut installiert, in dem Warnungen angezeigt und die abgeleiteten Daten wieder gelöscht. Es hat für mich funktioniert :)

0

Für mich verursachen die folgenden Aussagen einen Fehler.

let dict = mainDict as [String:String]

Beheben Sie das Problem mit force unwraps

let dict = mainDict as! [String:String]

Mit dem Compiler ist nichts verbunden. Es handelt sich nur um ein Typumwandlungsproblem. Apple sollte eine korrekte Beschreibung anstelle des Compilerfehlers enthalten .

0
iMHitesh Surani

In meinem Fall hatte ich das @objc-Protokoll mit optionalen Methoden und als ich seine Methoden auch in der Swift-Klasse anrief, bekam ich diesen Fehler. Nachdem ich das optionale Schlüsselwort aus den Funktionen des Protokolls entfernt hatte, war der Fehler verschwunden.

vorher (mit Fehler):

@objc protocol SomeDelegate:NSObjectProtocol{

    optional func someDelegateMethod()
}

class MySwiftClass{
    func notifyMyDelegate(){
        mydelegate?.someDelegateMethod?() //this line caused the error
    }
}

nach dem:

@objc protocol SomeDelegate:NSObjectProtocol{

    func someDelegateMethod()
}

class MySwiftClass{
    func notifyMyDelegate(){
        mydelegate?.someDelegateMethod()
    }
}
0
Oleg Sherman

Für mich war es MD5.Swift Problem

Sie müssen in Ihrem Projekt auch in den Pods nach dem Dateinamen "MD5.Swift" suchen

und ersetzen Sie den gesamten Inhalt mit dieser Datei hier

https://github.com/onmyway133/SwiftHash/blob/master/Sources/MD5.Swift

0
Ahmed Safadi

In meinem Fall hatte ich einen private struct Constants in class A und extension A.

Wahrscheinlich sollte es einen Fehler geben, aber es tat es nicht.

0
Tung Fam

Ich habe diese Fehlermeldung erhalten, als ich versuche, Tests auszuführen.

rm -rf ~/Library/Developer/Xcode/DerivedData

Durch das Löschen abgeleiteter Daten wurde das Problem behoben

0
FullMetalFist

Ich kann dies einfach und konsistent mit einem brandneuen Projekt reproduzieren, das in Xcode 7.0 beta (7A120f) erstellt wurde. Beachten Sie, dass das Problem wahrscheinlich breiter ist als im Beispiel, aber dies ist für mich zu 100% reproduzierbar, indem Sie einem neuen Projekt nur eine einzige Zeile hinzufügen. Dieses Problem scheint zumindest für dieses Beispiel ausschließlich für iOS und nicht für OS X zu gelten. Habe den Fehlerbericht # 21376523 an Apple übermittelt.

  1. Erstellen Sie ein brandneues Projekt in Xcode 7.0 (7A120f). Typ ist "Game", Sprache ist "Swift", Spieltechnologie ist "SceneKit".

  2. Erstellen und mit Standardeinstellungen ausführen Das Projekt erstellt und läuft gut im Simulator (Sie sehen das standardmäßige rotierende 3D-Raumschiffmodell).

  3. Fügen Sie GameViewController.Swift wie folgt eine einzelne SCNVector3-Eigenschaft hinzu:

    class GameViewController: UIViewController {  
      var p = SCNVector3Zero  
    

-> Produziert "Abbruchfalle: 6". Projekt wird nicht mehr kompiliert.

  1. Ändern Sie die Konstante in einen leeren Initialisierer.

    class GameViewController: UIViewController {  
      var p = SCNVector3()  
    

-> Gleiches Problem "Abbruchfalle: 6"

  1. Entfernen Sie die Eigenschaft und stellen Sie den Status "Clean" wieder her.

-> "Abortfalle: 6" ist weg, das Projekt wird erneut kompiliert und ausgeführt.

  1. Ändern Sie "var" in "let".

    class GameViewController: UIViewController {  
      let p = SCNVector3Zero
    

-> Kompiliert und läuft.

  1. Ändern Sie den Eigenschaftstyp in SCNVector4 anstelle von SCNVector3.

    class GameViewController: UIViewController {  
      var p = SCNVector4Zero
    

-> Kompiliert und läuft.

BEARBEITEN: Dieses Problem wurde in Xcode 7.0 beta-2 (7A121l) behoben, wenn "Abort Trap: 6" aufgrund eines Float-3-Vektortyps (z. B. SCNVector3) angezeigt wird. Aus den Versionshinweisen:

• Ein Compiler-Absturz beim Aufruf von C- oder Objective-C-Funktionen, die .__ benötigen. SIMD-Float3-Parameter wurden behoben. (21294916)

0
Ben Stahl

Ich konnte das Problem beheben, indem ich den Bridging-Header änderte. In meinem Fall war das Hinzufügen eines Zeilenumbruchs ausreichend. Sehr seltsamer Bug.

0
ReDetection

Ich habe keine anderen Lösungen ausprobiert. Ich habe dieses Problem für dieses Setup erhalten: 

func speacialAdd(_ num1: Int, to num2: Int){
    func specialMultiply(_ digit1: Int, with digit2: Int = num2){ // SOURCE OF PROBLEM
        print(digit2)
        print(digit1)
    }

    specialMultiply(5)
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print(speacialAdd(5, to: 6))
    }
}

Diese Zeile ist die Ursache des Problems. Die Standardeinstellung auf ein Argument scheint für eine verschachtelte Funktion nicht zu funktionieren

func specialMultiply(_ digit1: Int, with digit2: Int = num2) // ERROR

Lösungen sind:

func specialMultiply(_ digit1: Int, with digit2: Int) // OK
func specialMultiply(_ digit1: Int, with digit2: Int = 6) // OK

FWIW Ich habe das eigentlich zuerst auf dem Spielplatz geschrieben und einen anderen Fehler erhalten:

Spielplatzausführung fehlgeschlagen:

fehler: Symbole konnten nicht nachgeschlagen werden:
__T013__lldb_expr_111speacialAddySi_Si2totF4num2L_Sifau

0
Honey

Für mich war dieser Fehler: 

Ich habe eine Datei erstellt, um Erweiterungen in UIView zu erstellen. In dieser Datei habe ich ein privates Protokoll mit dem Namen Foo erstellt.

Dann habe ich gemacht: 

extension UIView: Foo

Durch das Entfernen des privaten Protokolls aus dem Protokoll wurde der Fehler behoben. 

Ich denke, das ist wahrscheinlich ein Fehler. Der Compiler sollte uns vor dem Problem warnen. Auf dieselbe Weise, in der wir gewarnt werden, können wir keine privaten Konformitäten zu Typen hinzufügen. Sie sollten uns sagen, dass die Konformität ein "öffentliches/internes" Protokoll verwenden sollte.

0
Nuno Gonçalves

Ich habe diese Meldung erhalten, wenn Sie do-try-catch in einem Failable-Initialisierer verwenden:

public init?() {
    do {
        ...
        super.init(superParam: try getParamForSuper())
        ...
    } catch {
        ...
    }
}

Die Kompilierung war erfolgreich, wenn der try-Aufruf in eine eigene lokale Variable verschoben wurde:

public init?() {
    do {
        ...
        let superParam = try getParamForSuper()
        super.init(superParam: superParam)
        ...
    } catch {
        ...
    }
}
0
Joakim

In meinem Fall wurde der Fehler durch das Setzen eines Werts auf einen Parameter in einer Funktion auf Null verursacht.

Vor:

public func comparableValidator<T: Comparable>(minValue : T? = nil, maxValue : T? = nil, value: T) -> Void {
    if let min = minValue {
        _assertFunc(min <= value, "\(value) must be at least \(min)")
    }

    if let max = maxValue {
        _assertFunc(max >= value, "\(value) must be at most \(max)")
    }
}

Nach dem:

public func comparableValidator<T: Comparable>(minValue : T?, maxValue : T?, value: T) -> Void {
    if let min = minValue {
        _assertFunc(min <= value, "\(value) must be at least \(min)")
    }

    if let max = maxValue {
        _assertFunc(max >= value, "\(value) must be at most \(max)")
    }
}
0
user3400012

für mich .. Ich habe den Inhalt einer @objc-Funktion wie folgt geändert:

vor:

        @objc func didConnectWithSession() {
           context!.stream.disconnectAfterSending()
        }

nach dem:

        @objc func didConnectWithSession() {
           //context!.stream.disconnectAfterSending()
        }

Dies hat den Fehler verursacht. Ich löste mich durch Entfernen der gesamten Funktion.

0
deLux_247

In meinem Fall benennt mehrere Parameter von init-Methoden um, wobei ein Protokoll die Kompilierung nicht besteht. Ich löse es, indem Sie es nacheinander tun und nach jeder Änderung erneut kompilieren.

0
Bill Chan

Ich hatte das gleiche Problem und stellte fest, dass ich das Build-System in "New Build System" geändert hatte, nachdem ich einen Artikel über "Beschleunigen Ihrer Builds" gelesen hatte (Dies ist übrigens der Artikel hier )

So kehren Sie zum Standard-Build-System zurück:

  1. Um das neue Build-System zu aktivieren, gehen Sie zu Datei → Projekteinstellungen (oder Arbeitsbereichseinstellungen).
  2. Ändern Sie Build System in Standard Build System .

enter image description here

Hoffe, es hilft jemandem und verschwendet keine Stunden damit herauszufinden, warum das nicht funktioniert hat!

0
Andres

Ich habe es geschafft, mein Projekt zu erstellen, indem ich die Optimierungsstufe im Menü "Swift Compiler - Code Generation" in den Zieleinstellungen (nicht den Projekteinstellungen) auf "Keine" setzte. Siehe den Screenshot unten ...

enter image description here

Dies sollte keine dauerhafte Lösung sein, da die Größe des ipa mehr als verdoppelt wird. Es sollte möglich sein, die Optimierung wieder einzuschalten, wenn Xcode 7 aus der Betaversion kommt.

0
PJeremyMalouf

Dieses Problem ist in Xcode 10.2.1 weiterhin vorhanden. Nach Bereinigen des Build-Ordners ist der Fehler behoben.

0
Tamás Sengel

Ich habe es behoben, indem ich Xcode -> Preferences -> Locations -> Relative auf Abgeleitete Daten gesetzt habe.

 Setting Derived Data

0
jawad

Ok, in meinem Fall war es, weil ich eine Enumeration in einer generischen Klasse hatte. Das Seltsame ist, dass der Compiler mir bei der Isolierung des Problems (in BaseDao2) den richtigen Fehler gemeldet hat. In meiner echten BaseDao-Implementierung (die mehr Zeug enthält) wird jedoch "Trap 6" ausgelöst. 

Type 'DaoError2' nested in generic type 'BaseDao2' is not allowed

Als ich das hatte: 

class BaseDao2<T>: InjectRestSession{

    enum DaoError2: ErrorType{
        case FAILED_RESPONSE(String)
        case INVALID_RESULT(String)
        case FAIL_TO_LIST, FAIL_TO_GET
    }

    func get() -> T?{
        return nil
    }
}

Jedenfalls verschiebe ich in meinem Fall den DaoError aus dem BaseDao und kompiliert alles. Mein Gefühl ist jedenfalls, dass "Trap 6" etwas ist, das nicht kompiliert werden kann, und der Compiler wurde verwirrt. Wenn Sie von einem einfachen Fall aus beginnen und das zurücksetzen, von dem Sie annehmen, dass es möglicherweise ein Problem verursacht, kann es hilfreich sein, das Problem zu ermitteln, indem Sie den richtigen Kompilierungsfehler erhalten. Mit anderen Worten, Sie müssen mit dem Swift-Compiler vorsichtig sein. 

0
Jeremy Chone