2016-07-22 1 views
0

OS X 10.6 및 OS X 10.7에서 내 응용 프로그램에만 발생하는 버그가 있습니다. 닫을 때 응용 프로그램이 충돌합니다.OS X 10.6 및 10.7에서만 닫는 응용 프로그램에서 충돌이 발생합니다.

설명 : 사용자가 앱 창을 닫으면 (결과적으로 앱을 닫을 때) 사용자에게 충돌 대화 상자가 표시됩니다. 이는 닫는 동안 앱이 다운 된 것을 의미합니다.

나는 OS X 10.7 사용자의 도움을 받아 디버그 버전의 응용 프로그램을 사용하고 있지만 충돌 로그를 더 쉽게 이해할 수 있다고 상상했지만 아무 것도 변경되지 않았습니다. Report Version 이후부터

Process: MyApp [838] 
Path: /Applications/MyApp.app/Contents/MacOS/MyApp 
Identifier: MyApp 
Version: ??? (???) 
Code Type: X86-64 (Native) 
Parent Process: MyApp [650] 

Date/Time: 2016-07-20 17:38:24.043 0200 
OS Version: Mac OS X 10.7.5 (11G63) 
Report Version: 9 

Crashed Thread: Unknown 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x00007fff5fc01028 

Backtrace not available 

Unknown thread crashed with X86 Thread State (64-bit): 
rax: 0x0000000000000055 rbx: 0x0000000000000000 rcx: 0x0000000000000000 rdx: 0x0000000000000000 
rdi: 0x0000000000000000 rsi: 0x0000000000000000 rbp: 0x0000000000000000 rsp: 0x0000000000000000 
r8: 0x0000000000000000 r9: 0x0000000000000000 r10: 0x0000000000000000 r11: 0x0000000000000000 
r12: 0x0000000000000000 r13: 0x0000000000000000 r14: 0x0000000000000000 r15: 0x0000000000000000 
rip: 0x00007fff5fc01028 rfl: 0x0000000000010203 cr2: 0x00007fff5fc01028 
Logical CPU: 0 

Binary images description not available 


External Modification Summary: 
Calls made by other processes targeting this process: 
task_for_pid: 0 
thread_create: 0 
thread_set_state: 0 
Calls made by this process: 
task_for_pid: 0 
thread_create: 0 
thread_set_state: 0 
Calls made by all processes on this machine: 
task_for_pid: 316 
thread_create: 0 
thread_set_state: 0 

는, 모든 것이 task_for_pid를 제외하고 항상 정확하게 동일합니다.

프로그램 종료 후에 만 ​​발생하기 때문에 프로그램 사용에 영향을주지 않지만 프로그램을 종료 할 때마다 충돌 보고서가 표시되어야합니다.

이 버그는 OS X 10.8 이상의 상위 버전에서 발생하지 않으며 10.11 SDK를 사용하고 있음을 기억하십시오.

+0

이렇게하면 도움이 될 것입니다. [이전 버전의 Mac OS X 용 앱을 어떻게 디버깅합니까?] (http://stackoverflow.com/questions/15882296/how-do-you-debug-an-app-for -an-older-version-of-mac-os-x/15882805 # 15882805) – Willeke

+0

앱에 문제가 있음을 알고있는 경우 정의를 사용하는 것이 좋습니다. SDK를 10.6으로 설정하려면 SDK를 다운로드하고 Xcode를 해킹하여 기존 SDK를 허용해야하며 결국에는 그렇지 않은 구문이 많아서 결국 문제를 찾기 위해 영원을 취할 것입니다. 거기에'array.count' 나'dictionary [key] = value; '와 같이 가능합니다. 그들은 잘못 인식되어 오류가 발생합니다. – vitormm

+0

메모리 손상을 찾습니다. –

답변

0

마지막으로 문제를 해결했습니다. 충돌이 내 앱에 속한다고 말하는 OS X에도 불구하고, 정확하게 그런 것은 아니 었습니다. 내 applicationWillTerminate: 함수에서 바이너리가 컴파일 된 NSTask를 실행하는 바이너리를 실행하고 있었는데 10.9 이상이 호환 가능하며 충돌을 일으켰습니다.

OS X 10.6으로 이진 파일을 재구성하면 대상 버전에서 충돌이 수정되었습니다. @Willeke가 부분적으로 제안한 것처럼, 내 Mac에 스노우 레오파드 (이중 부팅)를 설치하여 내 앱을 테스트 했으므로 이제 Snow Leopard와 El Capitan에서 테스트 해 보겠습니다. 가장 오래되고 가장 최근의 것 (시에라는 안정된 버전을 얻지 못함).

나는 OS X 10.8에서 그 버그가 왜 발생하지 않았는지 알지 못한다. 아마 애플은 시스템이 그런 종류의 문제를 일으키는 방식을 바꾸었다.

관련 문제