본문 바로가기

개발/ios

[Swift] EXC_BREAKPOINT (SIGTRAP)

반응형

앱이 특정 케이스에서 crash 되는 오류가 발생.

오류를 보니 EXC_BREAKPOINT 라는 exception이 발생했다.

 

Apple Developer Documentation

 

developer.apple.com

 

애플 문서를 보면,,

trace trap이 특정 지점에 프로세스를 중단했다는 말이라고 하는데..

swift 런타임은 복구할 수 없는 오류가 발생했을 경우 trace trap을 사용해서 프로세스를 중단시킨다고 한다. 

https://developer.apple.com/documentation/xcode/addressing-crashes-from-swift-runtime-errors

 

Apple Developer Documentation

 

developer.apple.com

관련 문서를 보면 nil 이 될수 있는 optional 변수를 force unwrap할 때 발생한다고 한다.

 

exception type 명 답게 코드상의 중단점을 제공한다.

코드를 확인해 보니


if(..) {
    let currUrl = webView.url
    if currUrl!.path.contains("먀먀") {
        .
        .

    }
}

이렇게 nil 이 될 가능성이 무궁무진한 변수를 force unwraping 해주고 있었다.

보통은 xcode에서 해당 에러를 잡아주는데,, 특정 조건(if) 안에서 발생했기 때문인지 오류가 나지 않았다.

그러다 보니 앱을 발행했을 때 런타임 오류가 나버림.

if(..) {
    let currUrl = webView.url?.path ?? ""
    if currUrl.contains("먀먀") {
        .
        .
    }
}

위와 같이 nil 경우에 대한 default 값을 넣어주는 방법으로 오류를 막았다.

반응형