출시 후 iOS 앱에 디버거를 연결하는 방법은 무엇입니까?


101

매우 드물게 발생하고 Xcode에서 실행중인 작업이있을 때 발생하지 않는 문제가 있습니다.

내 문제가 발생할 때까지 정상적으로 (예 : Springboard에서) 앱을 실행 한 다음 그 지점에서 디버거를 연결할 수 있습니까?

가능하다면 탈옥하지 않고 이것을하는 것을 선호합니다.

답변:


124
  • Mac에 연결된 기기 연결
  • 디버그> PID 또는 이름으로 프로세스에 연결
  • Xcode를 통해 시작할 때 디버그 탐색기에 표시되는 앱 이름을 대화 상자 시트에 입력합니다.

앱이 이미 실행중인 경우 디버거가 실행중인 프로세스에 연결됩니다. 실행 중이 아니면 앱이 실행될 때까지 기다렸다가 연결됩니다.


Ole, 답변 주셔서 감사합니다. 나는 이것을 할 방법을 찾고 있었다. 디버거를 연결하려고하면 연결된 것처럼 보이지만 다음 메시지가 표시됩니다. 경고 : / var / mobile / Applications / {GUID} / {APPNAME} .app / {APPNAME}에 대한 기호를 읽을 수 없습니다. 녹이다). XCode에서 "중지"버튼을 누르면 앱이 종료됩니다. 디버그 모드에서 빌드되고 있지만 디버그 기호를 찾지 못하는 것 같습니다. 어떤 아이디어?
Brian

4
나는 문제가 실행되고 있지 않은 경우, 그것은 시작에 앱 기다린 후 연결됩니다. 부품. 작동하지 않습니다. 프로세스 이름을 사용하여 앱이 호출 될 때까지 기다립니다. iPhone에서 앱을 시작했지만 디버거는 앱이 시작되었음을 인식하지 못합니다.
Jonny

1
@BrianV-프로세스에 첨부하려면 -ggdb로 컴파일하고 있는지 확인해야합니다.
itfische

4
나는 Jonny에 동의합니다. 내 경험에 따르면 연결은 시뮬레이터에서 작동하지만 실제 장치에는 연결되지 않습니다.
James Moore

4
참고 : Xcode 5.0.1+에서는 Debug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
Jason Axelson

117

다른 두 답변 중 어느 것도 약간의 어려움없이 나에게 충분한 세부 정보를 제공하지 않았기 때문에 여기에 남겨 두겠습니다.

  1. 시뮬레이터에서 앱을 실행하고 디버그 탐색기에서 이름을 기록해 둡니다. 여기에 이미지 설명 입력

  2. 장치를 연결하고 장치를 대상으로 선택하는 것을 잊지 마십시오 여기에 이미지 설명 입력

  3. 디버그> 프로세스에 연결> 프로세스 식별자 (PID) 또는 이름 별 여기에 이미지 설명 입력
  4. 1 단계의 이름을 입력하고 첨부합니다. 그게 당신이해야 할 전부입니다. 여기에 이미지 설명 입력

8
1000 개의 찬성표가 있어야합니다. cutom url 스키마를 통해 시작하는 디버깅은이 깔끔한 트릭 없이는 엉덩이에 고통을 줄 수 있습니다. 감사합니다!
txulu


7
이것은 프로세스에 연결된다는 점에서 작동하지만 실제로 필요한 로그 출력을 얻을 수 없습니다. 어떤 아이디어?
올랜도

2
@Orlando - 당신이 로그 출력을 찾고 있다면, 내가보기 엔 DeviceConsole 추천 : github.com/rpetrich/deviceconsole
오리온 elenzil

1
당신이 제안한대로 했어요. 오류가 발생합니다. Could not attach to PID이름과 ID를 모두 시도했습니다. 앱이 실행 중이고 중지 된 상태에서 시도했습니다 ..
Honey

49

Xcode 5.0.1 및 6에서는 메뉴 표시 줄 항목입니다.

Debug > Attach to Process > By Process Identifier (PID) or Name...

7

Xcode 7에서는 다음과 같습니다.

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