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


81

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

이것은 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의 최신 개발자 릴리스도 실행하고 있습니다. 방해가 될 수 있습니까?


iOS 시뮬레이터 및 연결 / 연결 해제 된 장치에서 빈 프로젝트를 실행하려고 했습니까?
Reck Hou 2013

@ReckHou 오케이 와우, 그래 새로운 프로젝트에서 같은 문제. 원인은 무엇일까요? xcode를 재설치하는 것 외에 다른 방법이 있습니까?
Beau Nouvelle

이미이 문제를 가진 두 사람이 있습니다. (마지막 업데이트 후 비슷한 오류가 발생합니다) 현재 버그가 수정 된 다음 Xcode 업데이트까지 AppCode를 사용합니다. (내 질문 stackoverflow.com/questions/16113036/... )
일리아 Ilin 보낸

5
오늘 일찍 OSX 10.8.4로 업데이트 한 후 동일한 결과를보기 시작했습니다. OSX 10.4.3에서 Xcode 4.6.2에 문제가 없었습니다. LLDB에서 GDB로 전환하면 문제가 해결되는 것처럼 보이므로 디버거 (OSX 10.8.4와 결합 된 Xcode 4.6.2 LLDB)로 인해 발생할 수 있습니다.
Matej Bukovinski 2013-06-05

1
10.8.4로 업데이트 한 후에도 동일하게 표시됩니다. 다른 모든 출시. 시뮬레이터를 재설정하고 Xcode를 다시 시작해도 아무런 차이가 없습니다. main ()에서 즉시 충돌이 발생합니다. 다른 모든 실행. GDB 아이디어에 감사드립니다-여기에서 작동합니다.
Graham Perks

답변:


75

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

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

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


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


정말 잘 작동하지 않습니다. 발사는 매번 질식합니다. GDB로 전환하는 것은 Apple이 문제를 해결할 때까지 현재로서는 훨씬 더 안정적인 솔루션입니다.
Jonny

2
당신과 질문자는 제가 개인적으로 가장 좋아하는 사람들입니다. 이것은 수리를 위해 MBP를 보내려는 곳으로 나를 미치게 만들었습니다.
Kalle

10.9 및 Xcode 5에서는 GDB가 제거되었으며 이제 모두 LLDB입니다. 그러나 모든 것이 제대로 작동합니다!
Beau Nouvelle

아아! 더 이상 사용되지 않는 컴파일러로 돌아가서 새로운 최신 컴파일러에서 (정말 고통스러운) 버그를 수정하는 것은 큰 문제입니다.하지만 선택의 여지가 없습니다.
MonsieurDart

4.6.3으로 업데이트하면 해당 버전이 출시되었는지조차 몰랐습니다.
David H

11

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

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


오 마이 갓 .... 고정. 너무 익숙해서 프로젝트를 실행할 때마다 계속 분노 할 준비를하고 있습니다. 하지만 아무 일도 일어나지 않습니다. 감사합니다. 내 버그 보고서에서 Apple에 알립니다.
Beau Nouvelle

2
정보 주셔서 감사합니다. 어제 하루 종일 나를 미치게 만들었습니다. 여기에서 검색하기 전에 (남은) 머리카락을 모두 뽑을 때까지 왜 항상 기다려야하나요! LOL.
Bertie

3

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.