iPhone Simulator에서 생성 된 충돌 로그?


96

iPhone Simulator에서 생성 된 충돌 로그가 있습니까?

시뮬레이터는 많이 충돌하지만 콘솔에 흔적을 남기지 않습니다. 충돌 로그가 유용합니다.


2
충돌 로그가 필요한 이유를 잘 모르겠습니다. 시뮬레이터의 앱이 충돌하지만 디버깅을 중지하기 전에 gdb 프롬프트에서 "backtrace"에 대해 "bt"를 입력하면 충돌 로그에 표시되는 내용을 정확하게 얻을 수 있습니다. (게시물 올해가 질문 강령술이 여기에 있었다 놓친 몰랐어요)
매튜 프레 더릭

3
디버거에 연결되지 않았을 때만 충돌이 발생한 경우 로그가 필요합니다.
Ian1971

네가 옳아. 말이 되네요!
Raptor

Xcode (cmd-8)의 "보고서 탐색기"에서 디버그 로그 (lldb 명령의 출력 포함)를 볼 수도 있습니다. 이는 이전 실행의 디버그 출력을 보는데도 유용합니다. 디버거가 연결되어 있지 않으면 분명히 작동하지 않습니다.
Sebastien Martin

2
디버그 로그는 크래시 로그와 동일하지 않지만 두 로그 모두 문제를 디버그하는 데 유용합니다.
Raptor

답변:


157

콘솔은 NSLog()시뮬레이터에서 실행중인 앱 의 출력을 표시합니다 . 충돌 로그는 파일에 저장됩니다.

내 홈 디렉토리에서 일부를 찾았습니다.

~/Library/Logs/DiagnosticReports/

파일 확장자는 .crash

내가 아직 알아 내지 못한 것은 디버거가 EXC_BAD_ACCESS신호를 잡아도 생성하도록하는 방법입니다.


최신 정보

현재 (OSX 10.11.6) .crash 로그인 은 에뮬레이터 자체가 충돌~/Library/Logs/DiagnosticReports 할 때 발생 합니다. 충돌에 대한 로그 (하지만 에뮬레이터 기기는 여전히 정상적으로 실행 중임)는 다음 위치에 있습니다.

~ / Library / Logs / CoreSimulator

크래시마다 고유 ID가있는 하위 폴더가 있습니다. 최근 충돌이 첫 번째 하위 폴더가되도록 날짜별로 정렬합니다. 그 안에서, stderr.log그리고 system.log.

또한 직접 아래 CoreSimulator를 참조 CoreSimulator.log하고 Simulator.log.


이 로그가 콘솔에 표시되지 않고 파일에 기록되는 이유를 아십니까? 정보 주셔서 감사합니다, btw.
aqua

11
iPhone 또는 iPad 시뮬레이터의 충돌 보고서가이 디렉토리 아래에 표시되지 않습니다.이 답변을 업데이트해야합니까?
저스틴

3
아마도 업데이트가 필요할 수도 있지만 반대표는이를 장려하는 정중 한 방법이 아닙니다.
ohhorob 2011

2
언급 된 디렉토리에서 충돌 보고서를 찾았지만 보고서가 하나 뿐이고 가장 최근 보고서가 아닙니다 (즉, 앱에서 몇 가지 작업을 계속 시도했지만 계속 충돌했습니다). 충돌이 모두 똑같아 서 문제가되지 않았지만 이것이 일반적으로 그런 것인지 궁금합니다.
Samik R

10
Justin과 ohhorob이 맞습니다. 당신은 엑스 코드없이 시뮬레이터에서 응용 프로그램을 실행하고있는 로그를 볼 수있는 충돌 재현 할 필요가~/Library/Logs/DiagnosticReports/
데이브 챔버

20

유틸리티에있는 OS X 콘솔 앱에서 이것을 볼 수 있다고 확신합니다. 그래도 내가 틀렸다면 저에게 투표하여 이것을 삭제하십시오.


최신 정보:

특히 (OSX 10.11.6 기준),

에뮬레이터에서 앱이 다운되면 하위 폴더 (고유 ID 포함)가 다음에 추가됩니다.

~ / Library / Logs / CoreSimulator

그 안에서 stderr.logsystem.log.

에뮬레이터 자체 가 충돌하면 하위 폴더가 다음에 추가됩니다.

~ / Library / Logs / DiagnosticReports

이 경로를 혼동하지 마십시오.

/ 라이브러리 / 로그

( ~시작시 부족 ) Mac에 대한 다른 보고서가 있습니다.



시뮬레이터 대신 iPhone 장치에만 적용되는 것 같습니다. 내가 틀렸다면 정정하십시오.
Raptor

7
콘솔은 Cmd- /를 누르거나 Debug / Open System Log ... 메뉴 옵션을 사용하여 시뮬레이터에서 열 수 있습니다.
lambmj 2014-06-26

5

특별한 경우에 저에게 도움이 된 것이 있습니다 ... 내 앱이 종료 될 때 SIGKILL과 충돌했습니다. 몇 초 동안 main.m에서 예외가 발생하면 앱이 종료되므로 역 추적을 얻을 기회가 없습니다.

나는“시뮬레이터가 크래시 로그를 어디에 저장 하는가”에 대해 많은 검색을했지만 답을 찾지 못했습니다. 그러나 다음 트릭이 매우 편리 해졌고 즉시 충돌 로그를 가져올 수있었습니다.

기본적으로 /Applications/Utilities/CrashReporterPrefs.app을 열고 설정을 "개발자"로 변경합니다. 이렇게하면 앱이 충돌 한 후 CrashReporter가 충돌 로그와 함께 팝업을 표시합니다.

Apple의이 문서에있는 "iOS 시뮬레이터 콘솔 및 충돌 로그보기"섹션에서이를 찾았습니다. http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application. HTML


그건 그렇고, 제가 조사하던 SIGKILL의 원래 문제는 문제가되지 않는 것으로 밝혀졌습니다 : stackoverflow.com/questions/7901262/…
dana_a

응용 프로그램 / 유틸리티에 CrashReporterPrefs 앱이 없다는 점을 지적해야합니다.하지만 검색하여 다른 곳에서 앱을 찾을 수있었습니다.
저스틴

@Justin 어디서 찾았습니까?
Ohad Schneider

1
위에 언급 된 도구는 "Additional Tools for Xcode"라는 번들로 Xcode에서 다운로드 할 수 있습니다. developer.apple.com/download/more/…
markshiz

1

이것은 훨씬 더 신뢰할 수 있습니다. 몇 단계만으로 소스 라인 번호와 메소드 이름을 찾을 수있었습니다.

  1. .app 및 .dSYM 파일이있는 디렉토리로 cd
  2. /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp을 실행합니다.
  3. asm-demangle 인쇄 설정
  4. 기호 파일 이름 인쇄 설정
  5. p / a 0 × 00015c64-> "콘솔"앱에서 충돌 로그를 열거 나 .crash 파일을 두 번 클릭하여 얻은 주소입니다.

3
충돌 로그가 필요한 이유를 잘 모르겠습니다. 시뮬레이터의 앱이 충돌하지만 디버깅을 중지하기 전에 gdb 프롬프트에서 "backtrace"에 대해 "bt"를 입력하면 충돌 로그에 표시되는 내용을 정확하게 얻을 수 있습니다.
Matthew Frederick

이 방법은 클라이언트 전화의 충돌 로그에 유용합니다.
Gamma-Point

1

충돌 충돌 로그는 ~ / Library / Logs / CrashReporter 아래에 표시됩니다.

  • iPhone 시뮬레이터 프로그램이 충돌하면 (시뮬레이터 내에서 실행중인 iPhone 앱이 아님) iPhoneSimulator에 대한 항목이 있습니다.
  • 시뮬레이터 내의 iPhone 앱이 충돌하면 앱의 표시 이름과 함께 충돌 로그가 나타납니다.

Xcode가 연결된 장치에서 충돌 로그를 가져 오면 ~ / Library / Logs / CrashReporter / MobileDevice의 하위 폴더에 저장됩니다.


1 년이 넘었지만 ~ / Library / Logs / DiagnosticReports ...에서 "시뮬레이터 내 앱"이 충돌하는 것을 확인하고 다음과 같이 보입니다. MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
Rob

0

저에게는 디버거 감시 창에 추가 한 표현이었습니다. 중단 점이 적중되었을 때 잘못된 표현으로 인해 XCode가 세그 폴트되었습니다.

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