Programing

iOS 앱이 실행될 때마다 충돌하며 오류를 찾을 수 없습니다.

crosscheck 2020. 10. 6. 07:51
반응형

iOS 앱이 실행될 때마다 충돌하며 오류를 찾을 수 없습니다.


앱을 처음 실행하면 모든 것이 잘 실행되는 것 같습니다. 중지 버튼을 누르고 몇 가지 작업을 수행하고 다시 시작하면 아무것도로드하기 전에 충돌하는 것 같습니다. 중지를 누르고 실행을 다시 누르면 제대로 작동합니다. 과정을 반복 할 때까지.

xcode가 "Thread 1 : signal SIGABRT"오류를 강조하는 곳입니다. 여기에는 분명히 유용한 것이 없습니다.

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class]));
    }
}

디버그 콘솔은 (lldb) 외에는 아무것도 표시하지 않습니다. (따라서이 시점에서 충돌하지 않고 중지한다고 가정합니다.) 따라서이 작업을 수행하면 BT다음과 같은 결과가 나타납니다.

(lldb) bt
* thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
    frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101
    frame #2: 0x04a7057b libsystem_sim_c.dylib`abort + 140
    frame #3: 0x01dc0b4e GraphicsServices`GSRegisterPurpleNamedPort + 348
    frame #4: 0x01dc069f GraphicsServices`_GSEventInitialize + 123
    frame #5: 0x01dc0c1f GraphicsServices`GSEventInitialize + 36
    frame #6: 0x000163f9 UIKit`UIApplicationMain + 600
    frame #7: 0x00001d0d Guitar Chord Poker HD`main(argc=1, argv=0xbffff32c) + 141 at main.m:16
    frame #8: 0x00001c35 Guitar Chord Poker HD`start + 53
(lldb) 

지금까지 내가 한 작업은 다음과 같습니다.

  • '클린'수행
  • 시뮬레이터를 재설정하고 컴퓨터를 재설정했습니다.
  • 뷰 컨트롤러의 모든 코드를 주석 처리했지만 여전히 충돌합니다.
  • 앱 델리게이트의 모든 코드를 주석 처리했지만 여전히 충돌합니다.
  • 그러나 .... Xcode 외부의 장치에서 앱을 실행했는데 완벽하게 작동하는 것 같습니다.
  • (편집) 다양한 캐시 폴더에서 xcode 및 모든 콘텐츠 (Simulators, Docs)를 삭제 / 재설치했습니다 (이렇게하면 새 다운로드 후 xcode가 이전 항목을 자동으로 다시 설치하지 못함). 그래도 명령 줄 도구가 보관되는 위치를 찾을 수 없습니다. 여전히 충돌합니다.

이 모든 것에도 불구하고 앱은 여전히 ​​매초마다 / 두 번 실행할 때마다 충돌합니다.

가장 최근의 Xcode 업데이트까지 문제가 없었습니다. Xcode 버그일까요?

(편집) OSX의 최신 개발자 릴리스도 실행하고 있습니다. 방해가 될 수 있습니까?


OS X 10.8.4와 LLDB조합 인 것 같습니다 . Kenster가 말했듯이 GDB로 전환하면 문제가 해결됩니다.

편집 :
그것은 디버그 서버의 경쟁 조건으로 인해 발생합니다 (듣습니다).

LLDB를 계속 사용하려는 경우 수정 사항이 있습니다. 앱이 시뮬레이터에서 이미 실행 중일 때 실행을 클릭하는 대신 Xcode에서 종료 (⌘-.)하고 "I love Xcode"라고 5 번 말한 다음 다시 실행 (⌘- 아르 자형). 충돌하지 않고 테스트했습니다.


Xcode 4.6.3 에서 수정 되었습니다 .


이 문제도 발생했습니다. 이 게시물을 살펴보십시오. 매초 실행시 Xcode 4.6.2 앱 충돌

기본적으로 디버거를 LLDB에서 GDB로 변경하십시오. 나는 이것이 LLDB가 버그가 있기 때문이라고 믿을 수 없습니다.


GDB로 전환하거나 장치 / 호스트를 재부팅해도 내 환경에서 문제가 해결되지 않습니다.

그러나 연결된 XCode 체계에서 Run 대상을 더 이상 자동으로 시작하지 않고 대신 "Wait for HelloWorld .app to launch"로 수정했습니다 .

유일한 단점은 장치에서 응용 프로그램을 수동으로 시작한다는 것입니다. 그러면 디버거가 연결됩니다.

참고 URL : https://stackoverflow.com/questions/16113848/ios-app-crashing-every-other-launch-cant-find-error

반응형