簡體   English   中英

如何僅使用iOS 10在iOS Swift 3.0中捕獲崩潰

[英]How to capture crashes in iOS Swift 3.0 using only iOS 10

我正在嘗試編寫一些基本代碼來捕獲使用Swift 3.0的iOS 10+中的崩潰,而無需使用第三方庫。

我發現以下功能:

// Capturing exceptions 

NSSetUncaughtExceptionHandler { exception in
        print("Exception: \(exception.name) \(exception.reason!)\(exception.description)")
        print(exception.callStackSymbols)
    }

    // Capturing other crashes - **is this enough ????**
    // I wrote these in application didFinishLaunchingWithOptions method, but these don't get called. 
    signal(SIGABRT) {(a) in
        print(a)
    }

    signal(SIGABRT){(a) in
        print(a)
    }

    signal(SIGILL){(a) in
        print(a)
    }

    signal(SIGSEGV){(a) in
        print(a)
    }

    signal(SIGFPE){(a) in
        print(a)
    }

    signal(SIGBUS){(a) in
        print(a)
    }
    signal(SIGPIPE){(a) in
        print(a)
    }

1-這些方法夠用嗎?

2-如果是這樣,我應該在哪里打電話給他們捕捉崩潰信息?

為了觸發崩潰 ,我在項目中擁有的唯一ViewController對象的ViewDidLoad中編寫了以下方法:

在此處輸入圖片說明

但是,此方法給了我EXC_BREAKPOINT,而不是上面的崩潰之一。

3-如何編程方式捕獲EXC_BREAKPOINT

4- 還有其他方法可以嘗試觸發崩潰嗎?

您知道iOS具有TestFlight,您可以從Apple網站上獲取應用程序崩潰的信息嗎?

如果您出於教育目的這樣做是很好的,但是否則,您無需編寫崩潰處理代碼。

如果您只是為了好玩而做,那么我認為您的困惑來自EXC_BREAKPOINT是CPU異常而不是ObjC異常的事實。 它們使用標准的Unix信號處理程序交付給您的應用程序,因此您必須使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM