Подтвердить что ты не робот

Не удалось выполнить команду из-за сигнала: Ловушка прерывания: 6

Начиная с Xcode 7 и Swift 2.0, я получаю ошибку выше, как на скриншоте, показанном здесь:

screenshot of error log

Я понятия не имею, откуда это, очистка и удаление производных данных не работали.

Кто-нибудь еще испытывает эту проблему?

Настройки проекта:

project settings

Настройки цели:

target settings

4b9b3361

Ответ 1

У меня такая же проблема со всеми проектами Xcode 6.3, я открываю в Xcode 7.0. Я создал новый проект, скопировал все мои исходные файлы и ресурсы, и все работало без этой ошибки компилятора. Я думал, что это имеет какое-то отношение к настройкам проекта. Я отключил оптимизацию Swift для "none", и Trap 6 исчез. Возможно, есть и другие настройки, которые также создают проблемы, но для меня это было.

Ответ 2

Перейти к проекту Build settings -> Swift Compiler - code generation -> Optimization Level → Для опции выбора отладки и выпуска "Быстрая, однофайловая оптимизация [-O]

введите описание изображения здесь

Ответ 3

В моем случае

Ошибка

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

ОК

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

Ответ 4

Я тоже получил эту ошибку на XCode 7 Beta 5. После того, как я очистил сборку, у меня появилась еще одна ошибка, говорящая о том, что один из моих классов не соответствует протоколу, который я только что изменил. После того, как я исправлю проблему, она строит. Изменения протокола, которые я сделал, это изменить два типа параметра метода от Int до Int32

Ответ 5

В моем случае

Компилятор даст мне сообщение:

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!

но я понял, что я пропустил стандартный параметр по умолчанию:

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
}

изменено:

typealias StructType = Struct

to:

typealias StructType = Struct<Int>

расширение CanGetClass пыталось вызвать getClass на неполном типе.

Ответ 6

Я получил это, когда сделал это:

protocol ProtocolA {
    associatedtype BType: ProtocolB
}

protocol ProtocolB {
    associatedtype AType: ProtocolA
}

Ответ 7

Это сработало для меня, так что просто попробуйте. я получил эту ошибку при преобразовании кода из swift 3 в swift 4.

Просто зайдите в Project> Target> Build Setting и найдите "Swift Compiler - Generation" и установите для уровня оптимизации "Без оптимизации" [-Onone].

Ответ 8

Убедитесь, что вы не внедрили частный протокол в расширение класса. Большую часть времени было бы довольно странно иметь закрытый протокол, но не обязательно, в зависимости от того, что вы хотите инкапсулировать.

Что-то вроде того же файла:

class C: ... {
}

extension C: P {
}

private protocol P: class {
}

Сделайте это, и вы наверняка получите Command failed due to signal: Abort trap: 6

Вместо этого удалите private модификатор из протокола, и ошибка исправлена.

Ответ 9

В моем случае это было с установкой значения в параметр, равный нулю, который вызывал ошибку.

До:

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)")
    }
}

После:

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)")
    }
}

Ответ 10

Я могу воспроизвести это просто и последовательно с совершенно новым проектом, созданным в Xcode 7.0 beta (7A120f). Обратите внимание, что проблема, вероятно, более широка, чем пример, но это на 100% воспроизводимо для меня, добавив только одну строку в новый проект. Эта проблема также относится исключительно к iOS, а не к OS X, по крайней мере для этого примера. Отправил отчет Apple об ошибке # 21376523.

  • Создайте совершенно новый проект в Xcode 7.0 (7A120f). Тип "Игра", язык "Swift", игровая технология - "SceneKit".

  • Создайте и запустите с настройками по умолчанию. Проект строит и работает отлично в симуляторе (вы увидите модель вращающегося 3D-корабля по умолчанию).

  • Добавьте одно свойство SCNVector3 в GameViewController.swift, например:

    class GameViewController: UIViewController {  
      var p = SCNVector3Zero  
    

- > Производит "Ловушку прерывания: 6". Проект больше не будет компилироваться.

  1. Измените константу на пустой инициализатор.

    class GameViewController: UIViewController {  
      var p = SCNVector3()  
    

- > Такая же проблема, "Ловушка прерывания: 6"

  1. Удалить свойство, восстанавливая состояние чистого проекта.

- > "Ловушка прерывания: 6" исчезла, проект снова компилируется и запускается.

  1. Измените "var" на "let".

    class GameViewController: UIViewController {  
      let p = SCNVector3Zero
    

- > Скомпилируется и запускается.

  1. Измените тип свойства на SCNVector4 вместо SCNVector3.

    class GameViewController: UIViewController {  
      var p = SCNVector4Zero
    

- > Скомпилируется и запускается.

EDIT: эта проблема исправлена ​​в Xcode 7.0 beta-2 (7A121l), если вы получаете "Abort trap: 6" из-за использования векторного типа float 3 (например, SCNVector3). Из примечаний к выпуску:

• Сбой компилятора при вызове C или Objective-C функций, которые принимают Параметры SIMD float3 исправлены. (21294916)

Ответ 11

Хорошо, в моем случае это было потому, что у меня было перечисление, вложенное в общий класс. Теперь, странно, это то, что когда я изолировал проблему (в BaseDao2), компилятор сказал мне правильную ошибку, но в моей реальной реализации BaseDao (которая имеет больше вещей), она бросает "ловушку 6".

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

Когда у меня было это:

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
    }
}

В любом случае, в моем случае я перемещаю DaoError из BaseDao и все скомпилированное. Во всяком случае, я чувствую, что "ловушка 6" - это то, что что-то не может скомпилировать, а компилятор запутался. Исходя из простого случая, и добавление обратно того, что, по вашему мнению, может вызвать проблему, может помочь решить проблему, получив правильную ошибку компиляции. Другими словами, вы должны быть осторожны с быстрым компилятором.

Ответ 12

Вот что вызвало ошибку для меня.

До:

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

После:

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

Не понравилось, что ключ никогда не использовался нигде. Я не уверен, почему это должно привести к сбою сборки.

Ответ 13

Мне удалось создать мой проект, установив уровень оптимизации на "Нет" в меню "Swift Compiler - Code Generation" в целевых (а не на проект) настройках. Смотрите снимок экрана ниже...

enter image description here

Это не должно быть постоянным решением, потому что оно более чем удваивает размер ipa. Должна быть возможность включить оптимизацию, когда Xcode 7 выходит из бета-версии.

Ответ 14

В моем случае у меня был протокол @objc с дополнительными методами, и когда я назвал его методы также в классе swift, я получил эту ошибку, после удаления необязательного ключевого слова из функций в протоколе ошибка исчезла.

до (с ошибкой):

@objc protocol SomeDelegate:NSObjectProtocol{

    optional func someDelegateMethod()
}

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

после

@objc protocol SomeDelegate:NSObjectProtocol{

    func someDelegateMethod()
}

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

Ответ 15

для меня.. Я изменил содержимое функции @objc следующим образом:

перед:

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

после

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

Это вызвало ошибку. Я решил удалить всю функцию.

Ответ 16

Я получил это сообщение при использовании do-try-catch в Failable initializer:

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

Компиляция прошла успешно при перемещении вызова try к его собственной локальной переменной:

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

Ответ 17

В моем случае у меня был private struct Constants, объявленный как в class A, так и extension A.

Вероятно, это должно быть ошибка, но это не так.

Ответ 18

Для меня причиной этой ошибки было:

Я создал файл для создания расширений в UIView. Внутри этого файла я создал частный протокол с именем Foo.

Затем я сделал:

extension UIView: Foo

Удаление частного из протокола заставило ошибку уйти.

Я думаю, это, вероятно, ошибка. Компилятор должен предупредить нас о проблеме. Точно так же мы предупреждаем, что мы не можем добавлять частные соответствия типам, они должны сообщать нам, что соответствие должно использовать протокол "общедоступный/внутренний".

Ответ 19

Я решил эту проблему с помощью этих шагов:

  1. побежал "стручок"

  2. Создайте подфайл следующим образом: platform: ios, '8.0' use_frameworks!

  3. побежал "pod install"

Ответ 20

В моем случае, переименование нескольких параметров методов init, который является протоколом, не позволяет выполнить компиляцию. Я решаю это, делая это один за другим, компилирую снова после каждого изменения.

Ответ 21

У меня возникла та же проблема, и я обнаружил, что проблема в том, что я изменил систему сборки на "Новая система сборки" после прочтения статьи о том, "как ускорить сборку" (эта статья, кстати, здесь)

Итак, чтобы вернуться к стандартной системе сборки:

  1. Чтобы включить новую систему сборки, выберите "Файл" → "Настройки проекта" (или "Настройки рабочего пространства").
  2. Изменить систему сборки на стандартную систему сборки.

enter image description here

Надеюсь, это поможет кому-то и не тратьте часы, пытаясь выяснить, почему это не работает!

Ответ 22

Я не пробовал другие решения. Я получил эту проблему для этой установки:

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))
    }
}

Эта линия является источником проблемы. По умолчанию это аргумент не работает для вложенной функции

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

Решения:

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

Я действительно впервые написал это на детской площадке и получил другую ошибку:

Не удалось выполнить игровую площадку:

ошибка: не удалось найти символы:
__T013__lldb_expr_111speacialAddySi_Si2totF4num2L_Sifau

Ответ 23

В Xcode 9.3 я переустановил конкретный модуль, в котором появлялись предупреждения, и снова очищал полученные данные n. У меня это сработало :)

Ответ 24

Я получил эту ошибку при попытке запустить тесты. Чтобы решить эту проблему, я поместил этот скрипт в терминал:

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

Удаление производных данных решило проблему

Ответ 25

Я исправил это, перейдя в Xcode → Preferences → Locations → Установить Relative опцию в Derived Data.

Setting Derived Data

Ответ 26

Для меня это был вопрос MD5.swift

Что вам нужно сделать, это поиск в вашем проекте по имени файла "MD5.swift", даже в модулях

и замените все содержимое этого файла здесь

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

Ответ 27

Эта проблема все еще присутствует в Xcode 10.2.1. После очистки папки сборки ошибка ушла.

Ответ 28

Я смог решить эту проблему, внеся изменения в заголовок моста. В моем случае достаточно было добавить разрыв строки. Очень странная ошибка.

Ответ 29

Для меня приведенное ниже утверждение вызывает ошибку.

let dict = mainDict as [String:String]

Исправить проблему с помощью force unwraps

let dict = mainDict as! [String:String]

Нет ничего общего с компилятором. Это просто проблема приведения типов, Apple должна дать правильное описание вместо выдачи ошибки компилятора

Ответ 30

Мой случай, Swift 5.1, Xcode 10.3 (10G8)

В коде произошел сбой Swift, когда вложенная функция использовала аргумент внешней функции в качестве параметра по умолчанию.

например,

func foo(duration: TimeInterval) {
    func bar(duration: TimeInterval = duration) {
    }
}

Надеюсь, это поможет.