[ios] iOS 시뮬레이터에서 테스트시 오류 : 부트 스트랩 서버에 등록 할 수 없습니다

UIAlertView 버튼을 클릭하면 시뮬레이터에서 내 앱을 테스트하고있었습니다. 거기에서 디버깅을 중단하고 코드를 약간 변경하고 앱을 다시 빌드했습니다. 이제 응용 프로그램을 실행하면 콘솔 에이 오류가 발생합니다.

부트 스트랩 서버에 com.myApp.debug를 등록 할 수 없습니다. 오류 : 알 수없는 오류 코드입니다. 이것은 일반적으로이 프로세스의 다른 인스턴스가 이미 실행 중이거나 디버거에 정지되었음을 의미합니다. 프로그램 수신 신호 : “SIGABRT”.

깨끗한 빌드를 수행하여 시뮬레이터에서 앱을 제거하려고 시도했지만 앱을 실행하려고 할 때 여전히이 오류가 발생합니다.

시뮬레이터에서 앱을 다시 실행하려면 어떻게해야합니까?



답변

시뮬레이터를 종료했다가 다시 시작해보십시오. “최악이 나 빠진다”면 항상 다시 시작해 볼 수 있습니다. 내 경험에 따르면 문제가 해결됩니다.


답변

상태: 최근 Mac OS 10.8 및 Xcode 4.4로 표시되었습니다.

tl; dr : 두 가지 상황에서 발생할 수 있습니다 : 장치에서 실행할 때와 시뮬레이터에서 실행할 때. 장치에서 실행할 때 장치를 분리했다가 다시 연결하면 문제가 해결되는 것 같습니다.

마이크 애쉬 제안

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

이것은 항상 작동하지 않습니다. 사실, 그것은 나를 위해 일한 적이 없지만 어떤 경우에는 분명히 작동합니다. 어떤 경우인지 모릅니다. 시도해 볼 가치가 있습니다.

그렇지 않으면이 문제를 해결하는 유일한 방법은 시작된 사용자를 다시 시작하는 것입니다. 재부팅하면 그렇게되지만 덜 과감하고 빠른 방법이 있습니다. 다른 관리자를 만들어야하지만 한 번만하면됩니다. 문제가 발생하면 자신으로 로그 아웃하고 해당 사용자로 로그인 한 다음 기본 사용자에 속하는 시작된 사용자를 종료하십시오.

sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`

에 기본 사용자 이름을 바꿉니다 user_id. 일반 사용자가 다시 정상 상태로 돌아 오면 다시 로그인하십시오. 고통 스럽지만 전체 재부팅보다 덜합니다.

세부:

이것은 Lion / Xcode 4.2에서 더 자주 시작되었습니다. (개인적으로, 나는 그 조합 전에 그것을 본 적이 없습니다.)

디버거가 버그를 죽이지 않고 디버깅을 중단하면 앱 프로세스를 자식으로 상속하는 버그가 시작된 것 같습니다. 이것은 일반적으로 응용 프로그램이 좀비가되고 신호 상태가 Z 인 Zs로 표시됩니다.

핵심 문제는 시작시 구현 된 부트 스트랩 이름 서버에있는 것으로 보입니다. 이것은 (내가 이해하는 한) 앱 ID를 마하 포트에 매핑합니다. 버그가 트리거되면 앱이 종료되지만 부트 스트랩 서버의 이름 서버 맵에서 정리되지 않으므로 부트 스트랩 서버는 동일한 이름으로 앱의 다른 인스턴스를 등록하는 것을 거부합니다.

wait()좀비 를 강제로 발사하면 문제가 해결 되길 바라지 만 (댓글 참조) 그렇지 않습니다. 핵심 문제인 좀비 상태가 아니기 때문에 (일부 좀비가 양성인 이유) 부트 스트랩 이름 서버이며이 짧은 킬링 런칭을 해결할 방법이 없습니다.

Xcode, gdb 및 사용자가 시작한 것 사이에 문제가 발생하여 버그가 발생한 것처럼 보입니다. 방금 iphone 시뮬레이터에서 앱을 실행하고 gdb 내에서 중지 한 다음 빌드를 수행하고 ipad 시뮬레이터로 실행하여 웨지를 반복했습니다. 스위칭 시뮬레이터 (iOS 4.3 / iOS 5, iPad / iPhone)에 민감한 것으로 보입니다. 시뮬레이터를 많이 전환 할 때 항상 발생하지는 않지만 상당히 자주 발생합니다.

로그인 한 상태에서 킬을 시작하면 세션이 중단됩니다. 로그 아웃했다가 다시 로그인해도 사용자가 시작한 것이 아닙니다. OS X은 기존 프로세스를 유지합니다. 재부팅하면 문제가 해결되지만 고통 스럽습니다. 위의 지침이 더 빠릅니다.

FWIW Apple에 버그를 제출했습니다. 레이더 : // 10330930


답변

Lion + Xcode 4.2에서이 문제가 발생하기 시작했습니다. Xcode 4.3에서도 문제가 발생했습니다.

모든 제안을 시도했지만 전체 재부팅 이외의 다른 방법은 없습니다.

다음은 재부트가 빠른지 확인하는 방법입니다.

모든 좀비 프로세스를 나열하십시오.

ps -el | grep 'Z'

앱이 좀비 프로세스로 표시되면 컴퓨터를 재부팅해야합니다. 오류 메시지는 “이것은 일반적으로이 프로세스의 다른 인스턴스가 이미 실행 중이거나 디버거에 정지되어 있음을 의미합니다.” 글쎄, Xcode는 당신이 죽일 수없는이 좀비 프로세스를 감지하고 있습니다. 이 문제를 해결할 수있는 유일한 방법은 시스템 재부팅입니다. 🙁

편집, 20120823 : 좀비 프로세스에 대해 더 잘 알고 있으므로이 답변을 업데이트하고 싶었습니다. 좀비 프로세스는 상위 프로세스가 종료하는 하위 프로세스에서 wait () (프로세스가 변경 될 때까지 대기)를 호출하지 않을 때 작성됩니다. 좀비 프로세스에서 직접 ‘kill’을 실행할 수는 없지만 상위 프로세스를 종료하면 좀비 하위 프로세스가 ‘리프’되어 프로세스 테이블에서 제거됩니다.

오랫동안이 문제를 보지 못했기 때문에이 시나리오에서 상위 프로세스가 무엇인지 검사하지 않았습니다. 상위 프로세스를 종료하는 대안은 시스템을 재부팅하는 것입니다. 🙂


답변

방금이 일이 발생했습니다. 장치에서만 오류가 발생하고 시뮬레이터가 제대로 작동했습니다. 장치를 재설정해야했고 오류가 사라졌습니다.


답변

최근에이 문제가 자주 발생합니다. 이것이 발생하지 못하게하는 것은 무엇입니까? 로그 아웃하고 문제를 해결하지만 문제가 자주 발생합니다.

편집하다:

방금 원인을 찾았습니다. ApplicationWillTerminate 메서드에 버그가있었습니다. 따라서 Xcode 창에서 중지 버튼을 클릭하면 앱이 올바르게 종료되지 않고 중단되기 시작했습니다.

활동 모니터를 확인하여 앱이 목록에 있는지 확인하십시오. 가능하면 강제 종료하십시오.


답변

좀비 프로세스로 인한 문제인 경우 :

ps -el | grep 'Z'

(이전 의견 https://stackoverflow.com/a/8104400/464289 에서와 같이 ) 즉시 문제를 해결하려면 재부팅하거나 아무것도 죽이지 않고 해결할 수 있습니다. 프로젝트 대상 실행 파일의 이름을 바꾸십시오.

  1. 왼쪽 창에서 프로젝트를 클릭하십시오
  2. 가운데 창에서 빌드 설정 을 선택 하십시오.
  3. 포장 아래 ‘에서 ‘ 제품 이름 ‘을 $ (TARGET_NAME)에서 $ (TARGET_NAME) (으)로 변경하십시오 .1

쉬운!


답변

글쎄, 대답은 없지만 적어도 하나 이상의 테스트를해야합니다. 터미널을 열고 “ps-Ael | grep Z”명령을 실행하십시오. “(clang)”과 다른 앱 또는 회사 이름의 두 항목이 있으면 재부팅해야합니다.

개발자 인 경우 짧은 버그를 입력하고 Apple에게 재부팅해야하는 성가신 방법을 알려주고 방금 입력 한 “rdar : // 10401934″로이 버그를 복제 할 수 있다고 언급하십시오.

데이비드