2013-07-01 2 views
1

간단한 질문이지만 온라인에서 답을 찾을 수없는 것 같습니다. 정말 실망 스럽습니다. 가정하자lldb - 무한 루프에 갇혀있는 명령을 어떻게 죽일 수 있습니까?

나는 디버깅 시도하고이 버그 코드가 있습니다

int myBug() 
{ 
    while(1); 
    return 0; 
} 

내가 LLDB로이 디버깅하고있어 경우를 나는 아무 결과, 지금까지 (놀라움)를 얻을 print myBug()을 입력합니다. 그러나 이것은 LLDB가 멈추었 기 때문에 더 이상 디버그 할 수없고 continue을 사용할 수 없음을 의미합니다. print myBug() 명령을 삭제할 수 있습니까? 지금까지 유일한 해결책은 모든 것을 종료하고 다시 시작하는 것입니다.

내가 엑스 코드 4.6.1에 LLDB을 사용하고 난 Ctrl + C, Ctrl 키 + T와 같은 키의 무리를 시도했지만, 아무것도 작동 :(

+0

Ctrl-Z, 아마도? –

+1

일시 중지 버튼을 누르기 만했습니다. –

+0

@ H2CO3 : 시도했지만 작동하지 않습니다. – OLL

답변

5

을 네, 엑스 코드 내에서이 외설에서 보인다 이 표현식 평가를 방해 할 수있는 쉬운 방법입니다. 명령 줄 lldb를 사용하는 경우 control-C가 예상대로 작동합니다. 프로세스에 신호를 보낼 수 있습니다. killall -INT appname lldb에 식 평가를위한 시간 초과를 지정할 수 있습니다 마이크로 세컨드, 그래서

(lldb) expr -t 5000000 -- myBug() 
error: Execution was interrupted, reason: breakpoint 1.1. 
The process has been returned to the state before expression evaluation. 
(lldb) 

당신은 t에 대한 버그보고를 할 수처럼 myBug()를 호출 다섯 초 시간 제한이 보인다 Xcode (http://bugreport.apple.com/)에서 작업 흐름에 표시되는 항목이 있는지 확인하십시오.

+0

Upvote for timeout-option. – mkalmes