2012-11-21 2 views
2

Info> Launch> Wait for를 사용하여 XCode 4.5를 사용하여 플러그인을 디버깅하는 중 ??? 실행 및 디버깅 작업을 훌륭하게 수행 할 수 있습니다.XCode 첨부 프로세스/분리 프로세스 (프로그래밍 방식으로 디버거 분리)

그러나 매번 중지 버튼을 누르거나 재생 버튼을 밀어 넣으면 플러그인이 연결되어 죽게됩니다 (사망 : 9). 프로세스에 연결하면 재생 또는 중지 버튼이 나를 프로세스에서 분리시키는 논리가 아닌가?

lldb 콘솔 >> 프로세스에서 매번 입력하지 않고 Xcode에서이 동작을 변경할 수있는 방법이 있습니까?

내가 생각하는 주류 앱 (내가 XCode를 첨부하는 코드)에 디버거를 분리하기위한 코드를 추가하는 것이 가능한가?

[EDIT]

디버거가 연결되었는지 확인 코드 실측치 :

지금
bool debugger_attached(void) 
{ 
    int mib[ 4 ]; 
    struct kinfo_proc info; 
    size_t size; 

    info.kp_proc.p_flag = 0; 

    mib[0] = CTL_KERN; 
    mib[1] = KERN_PROC; 
    mib[2] = KERN_PROC_PID; 
    mib[3] = getpid(); 

    size = sizeof(info); 

    sysctl(mib, sizeof(mib)/sizeof(*mib), &info, &size, NULL, 0); 

    return ((info.kp_proc.p_flag & P_TRACED) != 0); 
} 

어떻게 현재의 프로세스에서 디버거 분리를?

+0

디버거 콘솔에'process detach'를 입력하면 어떻게 될까요? – trojanfoe

+0

Xcode에서 디버깅을 멈추고 다른 앱이 계속 실행 중입니다. (정확하게 원하는 것은 있지만 Im을 사용하여 재생/중지 버튼을 클릭하는 데 익숙합니다. 직접 도와 줄 수 없으며 다시 시작해야합니다. app ...하지만 계속 실행하고 싶습니다 ... Im이하는 일은 "살아야"합니다 – McBob

+0

그 다음 유일한 옵션 인 것 같습니다. Xcode에서 Run *을 사용하여 프로세스가 시작 되었습니까? 이미 실행 중입니까? – trojanfoe

답변

1

Xcode가 프로세스에서 분리하는 간단한 GUI 제스처가없는이 동작이 현재 작동하는 방식 인 것은 후속 의견에서 분명히 드러났습니다. Mac에서 iOS Simulator 프로세스 디버깅을 할 때 시뮬레이터 앱이 Xcode/lldb에 의해 직접 실행되지 않고 이미 실행 된 프로세스에 연결됩니다. 이 경우 Xcode에서 중지 버튼을 누르면 시뮬레이트 된 앱 실행이 중지 될 것으로 예상됩니다. 이것은 사용자가 알 필요가 없거나 알 필요가없는 구현 세부 사항이지만 동작에 대한 논리가 있습니다. 그것은 가치가 무엇인지, 당신이

command alias det process detach 

처럼 ~/.lldbinit 파일에 별칭을 만들 수 있습니다 지금은 디버거 콘솔에서 당신이 분리 단지 det를 입력 할 수 있습니다 들어

. (또는 설정하려는 별칭이 무엇이든). GUI에서 버튼을 누르는 것만 큼 간단하지는 않지만 process detach보다 좋습니다.

관련 문제