2011-10-26 6 views
4

MacOS Lion에서 XCode 4.2를 사용하고 있습니다. 시뮬레이터에서 iPhone/iPad 앱을 디버깅 할 때 Xcode 도구 모음 (제품 | 정지)에서 "Stop"버튼을 사용하여 앱을 종료합니다. 아주 자주 이것 이후, XCode는 main.m 파일을 열고 UIApplicationMain 호출에 실행 포인터를 놓고 "Program received SIGKILL"이라고 말합니다. 그 후 약 1 초 후에 디버그 모드가 해제되므로이 오류를 디버그 할 수 없습니다. 내 응용 프로그램은 많은 스레드를 포함하므로 내 생각에 스레드가 여전히 작동 중일 때 리소스를 꺼내는 것과 관련 될 수 있습니다. 이것은 정상적인 것일 수도 있습니다. 어쨌든 앱이 종료되기 때문에이 문제에 대해서는별로 신경 쓰지 않습니다. 그러나 모든 디버그 후에이 SIGKILL을 보는 것은 정말로 성가시다. 어떻게 디버깅 할 수 있습니까? 또는 비활성화 할 수있는 방법이 있습니까?XCode 디버거가 Stop 버튼에서 SIGKILL로 중지합니다

EDIT : 일반적인 활동 로그 (일반 예외와 같은 크래시 세부 정보 제외)를 제외한 콘솔에는 아무 것도 없습니다.

+1

디버거가 SIGKILL을 보내 앱을 죽입니다. 이것이 Unix에서 프로세스를 종료하는 방법입니다. 문제가 무엇입니까? – hamstergene

+0

문제는 다음과 같습니다. XCode는 디버거에서이 SIGKILL을 보여 주며, 중단 점을 표시하는 것과 같은 방식으로 1 초 후에 디버거를 종료합니다. –

+4

Xcode의 코드 윈도우를 main.m으로 바꾼다면, 당신이보고 있던 것과는 거리가 멀다. – jrturton

답변

6

SIGKILL은 디버거를 중지 할 때 프로세스에 보내는 내용입니다. 잘못된 것은 없지만 가끔씩 나타나서 불필요하고 성가신 main.m 파일로 전환합니다.

Xcode에서 실행 파일을 중지하지 마라. 그냥 실행 상태로두고 다시 실행하려면 "재생"버튼으로 다시 시작하면 이전 작업이 종료됩니다. 곧 중단과 main.m로 전환 엑스 코드 4를 방지하기 위해

+1

당신이 말하는 것은 기본적으로 http://stackoverflow.com/questions/6703185/getting-exception-sigkill-when-relaunching-app와 동일한 것이며 두 가지 모두 처리하는 XCode 방법 일뿐입니다. 글쎄, 나는 그것을 좋아하지 않는다. 그러나 그것은 옳은 것처럼 보인다. 감사. –

+0

나는 그걸 좋아하지 않아. 나는 SIGKILL을 디버거에서 하이라이트가 필요한 것으로 해석하는 것이 실수라고 생각한다. – jrturton

0

, 당신은 정지 버튼을 누르기 전에 중단 버튼을 클릭하여 디버그 모드 (?)를 해제 할 수 있습니다. 당신이 코드를 편집하는 동안 귀하의 응용 프로그램을 중지하려는 경우

0

, 하나의 해결 방법은 편집기 영역에서 "슬쩍 왼쪽"하는 것입니다 . 그러면 main.c가 사라지고 이전에 편집 된 파일이 열립니다.

1

jrturton의 해결책이 실제로 문제를 해결하지 못하는 것 같습니다. NSUserDefaults를 사용하여 데이터를 저장할 수 있도록 , 특히이 앱을 중지합니다.

제 제안은 디버거가 앱을 더 이상 모니터링하지 않도록 실행 직후에 STOP을 누르는 것입니다. 그렇다면 앱을 닫고 원하는대로 다시 열 수 있습니다. 이렇게하면 앱을 죽이고 다시 열 때마다 디버거를 거치지 않고도 NSUserDefaults가 올바르게 저장되었는지 확인할 수있었습니다.

관련 문제