webentwicklung-frage-antwort-db.com.de

Xcode 7-Kompilierfehler: "Befehl fehlgeschlagen wegen Signal: Segmentierungsfehler: 11"

Gestern habe ich den offiziellen Xcode 7 installiert. Als ich versuchte, eines meiner Swift-Projekte zu öffnen, wurde eine Warnmeldung angezeigt, dass die neue Xcode-Version meinen Swift-Code (oder ähnliches) aktualisieren möchte. Okay, ich akzeptierte und danach erschien "Command failed due to signal: Segmentation fault: 11" Fehler beim Kompilieren (wenn Sie Details dazu wünschen, kann ich den gesamten Fehlertext schreiben). Hat jemand das gleiche Problem?

Vielen Dank

bearbeitet

Ich habe Xcode 6.4 wieder installiert und es ist in Ordnung, keine Kompilierungsfehler.

23
Chirila Vasile

Omg, das ist ein grandioser Fehler von Xcode. Lesen Sie einfach das hier. http://blog.bellebethcooper.com/xcode-bug.html Es brachte mich zum Lächeln.

Die Änderung war täuschend klein, aber so ist es (in meiner API-Client-Klasse, wo ich tatsächlich die JSON-Daten von der API abrieche):

Ich habe das geändert:

`let json = try? NSJSONSerialization.JSONObjectWithData(data, options: [])`

zu diesem:

`let json = try? NSJSONSerialization.JSONObjectWithData(data, options: []) as! [String: AnyObject]`

Dies ist eine der frustrierendsten Debuggerfahrungen, die ich je gemacht habe. hatte, aber ich hoffe, dass dieser Post jemand anderen helfen könnte, der dasselbe hat Problem. Und wenn Sie hier gelandet sind, indem Sie einen Fehler gegoogelt haben, kämpfen Sie. mit und das hat dir nicht geholfen, es tut mir so leid. Ich weiß genau was du gehst durch Gib nicht auf!

11
Murat Yasar

Dies zeigt an, dass eine Required-Methode Funktion in Ihrem Code fehlt ..__ In meinem Fall verwendete ich/- ObjectMapper und in meiner Klasse habe ich vergessen, die required init()-Methode zu verwenden, die diesen "Command failed due to signal: Segmentation fault: 11" verursacht.

required init?(_ map: Map) {

}
7
Muhammad Umair

Schauen Sie sich die andere Warnung an, die Sie sehen. 

Mein Fall verwies auf Probleme mit iOS9 und GoogleAds. Siehe hier: https://developers.google.com/admob/ios/ios9

Kurze Antwort war, die Build-Einstellung ENABLE_BITCODE zu deaktivieren.

Mein Fehler:

ld: '/pp/src/shared_js/libs/GoogleMobileAdsSdkiOS-7.3.1/GoogleMobileAds.framework/GoogleMobileAds(GADGestureIdUtil.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: unable to execute command: Segmentation fault: 11
clang: error: linker command failed due to signal (use -v to see invocation)

Ich habe dieses Problem während der Konvertierung verschiedener Projekte nach Swift3.0 viele Zeit angetreten. 

Da diese Ausgabe dynamisch aussieht, hat jeder eine andere Lösung als jede universelle Antwort. In dieser Ausgabe besteht das Hauptproblem jedoch darin, den Ort zu identifizieren, an dem gearbeitet werden kann.

  • Identifizieren Sie die Methode, für die der Fehler verantwortlich ist

    Klick auf Fehlermeldung

 enter image description here

  • Hier bestimmen Sie die Klasse, die für den Fehler verantwortlich ist, um den Zeitfehler für die Kompilierung Zu generieren

     enter image description here

In meinem Fall ist AppDelegate zuständig.

  • Um eine Fehlerzeile zu finden, gehen Sie zum Ende der langen Fehlerbeschreibung. Sie finden folgenden Code:

    1. While emitting IR SIL function @_TFC9MyProject11AppDelegate21getNotificationDetailfGSqGVs10DictionaryVs11AnyHashableP___T_ for 'getNotificationDetail' at /Users/ABC/Documents/BitBucket/iOS/2016/Projects/MyProject/AppDelegate/AppDelegate.Swift:153:5

Hier ist 153 die Codezeile in AppDelegate.Swift.

func getNotificationDetail(_ launchOptions : [AnyHashable: Any]?) {
    if launchOptions != nil {
        let dictLaunch = launchOptions! as NSDictionary
        NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.openRespectiveNotificationScreen), name: NSNotification.Name(rawValue: WebServiceKey.APPMANAGER_SERVICE_CALL_FINISH), object: nil)

        inactiveUserInfo  = dictLaunch.object(forKey: UIApplicationLaunchOptionsKey.remoteNotification) as? NSDictionary
    }
}

Kommentieren Sie dann den gesamten Code innerhalb der Methode und erstellen Sie ihn erneut. Versuchen Sie dann, eine Zeile nach der anderen zu kommentieren, damit Sie schließlich eine Zeile erhalten, die einen Fehler erzeugt.

Nachdem Sie die exakte Codezeile gefunden haben, können Sie sie leicht beheben.

In meinem Code finde ich die letzte Zeile dieser Methode Fehler erzeugen.

Also ersetze ich es mit dem folgenden Code und es wird erfolgreich erstellt.

inactiveUserInfo  = dictLaunch[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary

Das Wichtigste ist also, vorsichtig zu debuggen. Versuchen Sie es auf diese Weise, Sie werden Fehler auf jeden Fall leicht beheben.

4
technerd

Zuerst empfehle ich, das Build-Protokoll sorgfältig zu überwachen, um die Datei mit Problemen zu finden. In meinem Fall verursachte ein optionaler Wert, der in der Schleife verwendet wird, einen Segmentierungsfehler im Build-Prozess.

for i in 0..<hoge?.count {

Ich habe meinen Code wie folgt korrigiert;

for i in 0..<hoge!.count {

Ich habe jetzt keinen Fehler. ^ (^ O ^) /

3

Lesen Sie die Debug-Nachricht sorgfältig.

Ich bin auf diesen Fehler gestoßen, weil ich in der if-Anweisung versehentlich ein einzelnes '=' anstelle von '=' verwendet habe.

if aString.characters.count = 2 {...}
2
Kyle KIM

Dieser Kompilierungsfehler trat in Swift-Projekt Xcode Version 7.3 (7D175) auf. Folgendes ist das Szenario:

  1. In der Swift-Klasse als "@objc-Protokoll" deklariert
  2. In einer anderen Klasse, die dieses Protokoll implementiert, ist eine der nicht optionalen Methoden nicht implementiert

Die Implementierung der Methode hat das Problem für mich gelöst. Dies könnte einer der Gründe sein, warum Menschen mit diesem Problem konfrontiert sind. Ich hoffe, dass das hilft

1
KrishnaCA

Ich hatte das gleiche Problem. Xcode 7.2.1. Bei der Auswahl des Fehlers und dem Erweitern der Protokolle konnte ich den Kompilierungsfehler zwischen den langen Pfaden finden. 

Siehe die Zeile nach dem "1." im angehängten Bild. Es hat einen Verweis auf eine Datei und eine Zeile. Wenn ich es betrachte, konnte ich den Fehler finden. 

In meinem Fall hatte ich eine ungültige Aufzählung, ich habe eine Logik von einer Struktur in eine Aufzählung verschoben und diesen Fehler eingefügt:

Ich hatte:

return .Success(dict: dict)

Ich sollte: 

return .Success(dict)

 Log error after selecting it in the Issue Navigator

1
Juan Valera

Ich hatte den gleichen Fehler wegen:

 let stringB: String? = stringA.characters.count = 0 ? nil : stringA

Lösung war es zu ändern:

 let stringB: String? = stringA.characters.count > 0 ? stringA : nil

Vielleicht hilft das jemandem ...

1
Manuel

Für mich bestand das Problem (XCode 7.3.1) darin, einen + = - Operator für ein Wörterbuchelement zu verwenden.

zum Beispiel:

func test() {
    var myDict:[String:String] = [:]
    myDict["key"] = "pig"
    myDict["key"] += "dog"

    var myArray:[String] = []
    myArray.append("pig")
    myArray[0] += "dog"
 }

Dies führt zu einem Segmentierungsfehler. Entfernen Sie das Pluszeichen von myDict, und alles ist in Ordnung.

Ich bin mir bewusst, dass dies ein Fehler ist (Wörterbuchverweise sind nullfähig), aber der Compiler sollte nicht so ausfallen.

1
dave

Für mich war es eine längere Funktion, die ein Testdatenfeld enthielt.

0

Für mich veränderte sich das Problem, wie ich überprüfe, ob etwas falsch war. Anstatt:

if object1.hidden == false {
}

ändern:

if object1.hidden != true {
}
0
claassenApps

Xcode neu starten. Clean Build (Cmd + K, Cmd + Shift + K und Clean Build-Ordner -> Option + Cmd + Shift + K) Es sollte das Problem beheben. 

0
user2084611

Ich habe diesen Fehler erhalten, als ich mit Xcode 8.2.1 kompilieren wollte. Ich verwende Cocoa Pods und habe den Verdacht, dass einer der Pods das Problem war, da einige Dateien des Pods in der langen Fehlerausgabe des Compilers referenziert wurden. Nach dem Beenden von Xcode und dem Ausführen von pod update in meinem Projektverzeichnis (über Terminal) konnte ich erfolgreich kompilieren, als ich mein Projekt erneut öffnete.

0
Dana Wheeler

Für mich:

Ich benutze Closure als AnyObject, nachdem ich diese Cast-Schließungen/Blöcke - Funktion verwendet habe. Fehler behoben.

typealias UserCallBack = () -> Void
...
if let callBack = callBack as? AnyObject {
  request?.userInfo["callBack"] = callBack
}
0
Hailong

Für mich wurde dies durch das Deklarieren einer Struktur in einer Erweiterung der letzten Klasse verursacht:

final class X {
    ...
} 

extension X {
    struct Y {
        ...
    }
}
0
Max Chuquimia

Haben Sie versucht, das Projekt erneut zu öffnen und/oder Ihr Schema erneut hinzuzufügen? Ich habe es getan und der Fehler war weg.

0
Adriana Pineda

So habe ich das Problem behoben - zuerst, wie von vielen hier vorgeschlagen, lesen Sie bitte das Protokoll sorgfältig. Es sagt Ihnen genau die Zeilennummer, wo es versagt und warum es versagt. Durch das Kommentieren dieser Zeile wurde das Problem behoben. In meinem Fall war es ein Fehler bei der Typüberprüfung. Ich verwende Gloss-Strukturen für das JSON-Parsing und es scheint, dass der Inline-Parser, wenn Sie tiefer in die JSON-Hierarchie einsteigen, nicht erkennt, dass ein Problem mit der Kompilierzeit vorliegt. Wenn Sie das Projekt erstellen, schlägt es fehl. Im Idealfall sollte der Typüberprüfungsfehler vom Inline-Parser erkannt werden. Dies kann ein Problem mit Xcode sein, aber es ist Ihr Code, der es beschädigt. Wenn ich viele der Beiträge gelesen habe - meine Analyse wie folgt. Wenn Sie versuchen, falsche Typen (optional oder anderweitig) zuzuweisen, erkennt der Inline-Parser ihn in einigen Fällen nicht. Beim Erstellen erkennt es es und verursacht Segmentierungsfehler. Es ist unser Code, der trotz eines Fehlers mit Xcode falsch ist. Er kann behoben werden, wenn wir die Protokolle sorgfältig lesen!

0
ReshDev

leider habe ich immer den gleichen fehler wie du. Ich schlage vor, der beste Weg für Sie besteht darin, ein neues Projekt mit neuem Xcode neu zu erstellen und den gesamten Code in dieses neue Projekt umzuwandeln. Übrigens, nach dem Aktualisieren eines beliebigen Ortes wie Framework oder Xcode kann dieser Fehler auftreten, der Apple ist dumm.

0
ios killers

Ich habe versucht zu nutzen? auf eine kluge Art, als mir das passiert ist.

Ich vermute, Swift mag es nicht, wenn Sie versuchen, mehrere zu verketten? zusammen wie in, obwohl der Syntax-Highlighter keinen Fehler ausgibt:

let ageNum = self.ageValue > 0 ?? self.birthday?.ageFromDate() ?? 0
0
Kevin

Ich hatte den gleichen Fehler in meinem Projekt nach dem Upgrade auf xCode 7. Ich entschied mich dafür, die neue Version von xCode zu entfernen und xCode 6.4 zu installieren. Mit xCode 6.4 hat es gut funktioniert, also schlage ich vor, dass Sie das tun, um damit zu beginnen. Auf der anderen Seite sollten Sie immer auf dem neuesten Stand sein, aber Sie können auch xCode 6.4 und 7.0 haben :) Hoffe, das klappt für Sie!

0
Erik Auranaune

Ich habe versucht, die NSData als folgenden Code in eine Datei zu schreiben.

 if let currentResumeData = currentUserInfo["NSURLSessionDownloadTaskResumeData"]
 {
     // the following "do" was giving the above mentioned compile error.
     do {
         try currentResumeData.writeToFile(fileNameString, options: .DataWritingAtomic)
     } catch {}
     // the above error code.
 }

Nachdem ich verschiedene Antworten zu StackOverflow gelesen hatte, änderte ich sie wie unter, wodurch der Fehler behoben wurde.

 if let currentResumeData:NSData = currentUserInfo["NSURLSessionDownloadTaskResumeData"] as? NSData {
 {
     do {
         try currentResumeData.writeToFile(fileNameString, options: .DataWritingAtomic)
     } catch {}
 }

Wie Sie sehen, benötigte der Compiler den richtigen NSData-Typ der Variablen "currentResumeData", um die Methode .writeToFile aufzurufen.

Ich bin sicher, das wird anderen helfen.

0
SHS

In meinem Fall war die Besetzung, die ich korrigieren musste, der Antwort von Murat Yasar ähnlich ( https://stackoverflow.com/a/36867502/512403 ), aber meiner hatte zwei zu korrigierende Teile Ich arbeite nicht mit dem ursprünglichen Fix, also musste ich meinen Code noch ein wenig verbessern:

Schlechte Version:

let jsonObject: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)

Gute version:

let jsonObject = try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject]

Vielleicht kann dies jemandem helfen, der sich mit diesen Macken von Swift noch nicht auskennt.

0
Isaac

Ich habe ein Projekt, das von Zeit zu Zeit in derselben Datei abläuft. Mein Workaround ist: 

Gehen Sie zu der Datei, die der Segmentierungsfehler angesprochen hat, kommentieren Sie alle Importe aus, führen Sie den Befehl aus (Build schlägt offensichtlich fehl), geben Sie alle Kommentare für das Importieren ab -> Builds wurden erfolgreich erstellt. 

Meine Importe waren Firebase und FirebaseAuth, wenn es jemandem hilft. 

0
Roni Leshes