푸시 알림으로 시작할 때 앱 디버깅


135

현재 푸시 알림을 수신하는 앱을 개발 중입니다. PHP 페이지를 통해 100 % 작동합니다. 내 앱이받을 수있는 여러 가지 유형의 푸시 알림이 있습니다. PHP는 이것을 처리하고 내 응용 프로그램에 다른 정보 패킷을 보냅니다.

그러나 사용자가 알림을 "보고"내 앱이 시작되면 사용자가 앱을 수동으로 시작한 경우와는 달리 푸시 알림 유형에 따라 다른 작업을 수행하고 싶습니다. 구조적으로 잘 작동했습니다.

내 푸시 유형 중 하나는 여러 다른 서버에 여러 연결을 만들고 데이터를 협상하는 UIView를 열어야합니다. 이 UIView는 예를 들어 주 메뉴에서 트리거 될 때 제대로 작동하지만 푸시 알림이이 UIView가 나타나도록 트리거하면 소켓 연결이 예상대로 작동하지 않습니다.

이제 내 질문은 소켓에 관한 것이 아니라 더 많은 것입니다-어떻게 그런 문제를 디버깅합니까? 푸시 알림에서 앱을 시작할 때 알 수있는 것 (상대적으로 새롭습니다)에서 그 실행을 디버거 / 콘솔 등에 연결할 수있는 방법이 없습니다 ... UIAlertViews, 다양한 서버 사이에 많은 통신 회선이 있습니다.

당신이 나에게 어떤 조언을 주시면 대단히 감사하겠습니다.

답변:


147

XCode <4.0 (XCode> = 4의 경우 아래의 delirus의 답변 참조)에서 디버거를 통해 앱을 시작하는 대신 앱을 시작한 후 앱에 디버거를 연결하도록 Xcode를 구성 할 수 있습니다. 이를 통해 URL 스킴, 페이스트 보드 및 푸시 알림과 같은 애플리케이션의 시작 상태에 따라 다양한 사항을 디버깅 할 수 있습니다.

  1. Xcode에서는 소스 막대를보고 대상 아래에 실행 파일이 있습니다.
  2. 앱의 인스펙터를 실행 파일로 불러옵니다.
  3. 인스펙터에서 디버깅 탭을 클릭하십시오.
  4. "디버거를 시작한 후 실행 파일 시작"을 선택 취소하십시오.
  5. "다음 실행 / 푸시 알림 대기"를 확인하십시오.

이제 앱을 실행하는 대신 Xcode에서 디버그를 클릭하면 앱이 실행되기를 기다리는 창이 표시됩니다. 그런 다음 정상적으로 전화에서 앱을 시작하면 Xcode가 앱에 연결됩니다.


37
나는 이것이 적절하지 않을 수도 있지만 나는 당신을 사랑합니다. :)
Dutchie432

17
이 방법으로 응용 프로그램을 시작하면 응용 프로그램의 stdin, stdout, stderr이 GDB 콘솔로 라우팅되지 않고 정상적인 응용 프로그램 시작 위치를 가리 킵니다. 구성 도우미에서 장치를 보면 장치의 시스템 콘솔에서 NSLog ()를 볼 수 있습니다.
Louis Gerbarg

1
여기서 나에게 매우 귀중한 점을 가르쳐 주셨습니다. 감사합니다. 지난 2 일 동안 게시물의 20 분 이내에 수정할 수있는 것을 디버깅하려고했습니다.
Dutchie432

1
@stigi는 URL 스키마 테스트를 위해 시뮬레이터에서 작동합니다. 나는 그 문제의 경우 엑스 코드 4.5을 사용하고 있습니다
dreyln

1
@ dreyln 내 의견은 2009 년부터였습니다 :) 이후 많은 변화가있었습니다. 그러나 머리 위로 감사합니다!
stigi

124

Xcode 4의 경우 다음을 수행해야합니다.

  1. "체계"드롭 다운을 통해 활성 체계를 편집하십시오. ( + <)
  2. 왼쪽에서 'Run MyApp.app'을 선택하십시오.
  3. 오른쪽의 '정보'탭을 선택하십시오.
  4. 마지막으로 "MyApp.app 시작 대기"옵션을 선택하십시오.

"구성표 편집기에서 실행 파일 사용자 정의"섹션에서 자세한 내용을 확인 하십시오 .

편집 :
GDB에서 로그를 놓친 경우 Louis Gerbarg의 답변에 대한 의견 을 참조하십시오 .


1
Xcode 4.2 for Lion을 사용하고 있으며 URL 체계에서 앱이 올바르게 시작되고 디버거 실행이 중지되지 않지만 콘솔에 아무것도 표시되지 않습니다. 뭔가 빠졌습니까?
LoDani

@LoDani는 여기에서도 마찬가지입니다. 왜 그런지 알아 내셨습니까?
davis

3
@LoDani, Davis G .: 허용 된 답변에 대한 Louis의 의견을 보셨습니까? stackoverflow.com/questions/1239000/… 이 방법으로 시작하면 stdin / out / err가 콘솔로 리디렉션되지 않습니다.
Ivan Vučica

고마워, 내 하루를 구했어! URL 처리기가 내 앱을 시작할 때만 발생하는 버그를 해결하려고합니다.
Eliot

@delirus-XCode 4 용으로 업데이트 해 주셔서 감사합니다.
Dutchie432

112

XCode 10, 9, 8, 7 및 6 :

  1. 툴바 에서 구성표선택하십시오 (디버깅하려는 장치의 왼쪽)
  2. 체계 편집을 선택 하십시오
  3. 왼쪽 패널에서 실행 을 선택 하십시오 .
  4. 를 들어 실행 옵션을 선택하여 실행 파일이 출시 될 때까지 기다립니다
  5. 구성표 편집기를 닫고 XCode 프로젝트를 실행 하십시오.

이제 알림, 맞춤 URL에서 시작하거나 앱 아이콘을 터치하여 디버깅 할 수 있습니다.


9
이 대답은 일반적으로 올바른 길을 택했지만 많은 문제를 일으켰습니다. 3 단계는 약간 오해의 소지가 있습니다. 물론 그렇게해야합니다. 왼쪽 패널에서 실행을 선택하십시오. 그러나 매우 비슷한 개념의 단어로 5 단계가 있어야합니다. 결과를 기대하기 전에 xcode의 실행 버튼을 클릭하십시오. 처음에는 효과가 없었기 때문에 다른 동료에게 조언을 요청했습니다 ... 내가 옵션을 생각하면서 예라고 대답 한 Run 일을했다면 나. 3 ... 정말, 정말, 정말 ...이에 5 단계가 있어야한다
플로린 Odagiu

@FlorinOdagiu 좋은 전화. 5 단계를 추가했습니다. 감사합니다!
bgolson

Xcode가 다른 구성표 탭을 복원하는 경우 시작 옵션은 정보 탭 아래에 있습니다.
Nate Whittaker

3
앱을 수동으로 시작할 때 디버거 창에 출력이 표시되지 않습니다.
dvdblk

3

푸시 알림을 사용하고 있지 않으므로 푸시 알림의 정확한 작동을 모릅니다. 그러나 가능한 경우 프로그램의 기본 메소드에 알림이 게시 된 것처럼 가장하거나 ApplicationDidFinishLaunching : 메소드 내에서 application : didFinishLaunchingWithOptions : UIApplicationDelegate 메소드를 호출하여 푸시 알림 수신을 모방하려고합니다.

HTH-건배, Daan


또한 좋은 아이디어이지만 모방은 항상 실제 디버깅에 두 번째로 좋습니다! 행복한 코딩!
Dutchie432

3

Xcode 6에서 :

  1. USB를 사용하여 iPhone을 Macbook에 연결
  2. 아이콘을 탭하여 iPhone에서 앱을 실행하십시오.
  3. Xcode 메뉴에서 Debug>> Attach to Process앱 선택

1
이 방법으로는 중요한 실행 경로를 디버깅 할 수 없습니다.
Zorayr

2

XCode 11 및 10의 경우 다음을 수행 할 수 있습니다.

  1. 구성표 옵션을 선택하십시오.
  2. 구성표 편집을 선택하십시오.

  3. 왼쪽 패널에서 실행 옵션을 선택하십시오.

  4. 시작 부분에서 실행 파일이 실행될 때까지 대기를 선택한 다음 대화 상자를 닫으십시오.

  5. 프로젝트를 빌드하고 실행하십시오. 이제 앱 아이콘을 누르거나 알림 메시지를 눌러 앱을 시작할 수 있습니다.

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