0

我正在尝试测试我的 Mac os 应用程序,它在 10.8 上运行良好,但是当我开始在 mac 10.6.3 (iatkos s3) 上测试它时,我遇到了一些问题。

首先,我必须使用单独的计算机来安装 10.6.3,因为我的 macbook air 不允许我安装 10.6.3(硬件比软件更新)。我所做的是,在 xcode 中运行它,获取 .app 文件,将其放入我的 10.6.3 应用程序文件夹,然后运行它。

我在那里放了一些跟踪日志,这是我的代码:

- (void) startMethodInBackground: (id) sender {
    NSLog(@"line 101"); //this shows
    [self performSelectorInBackground:@selector(myOtherMethod:) withObject:sender];
    NSLog(@"line 102"); //not showing
}

- (void) myOtherMethod: (id) sender {
    NSLog(@"line 201"); //not showing 
    @autoreleasepool {
        NSLog(@"line 202"); //again not showing
        @synchronized (self) {
            NSLog(@"line 203"); //not showing
            ... ...
        }
    }
}



Version:         1.0 (1)
Code Type:       X86-64 (Native)
Parent Process:  launchd [1126]

Date/Time:       2013-02-28 16:53:10.668 -0500
OS Version:      Mac OS X 10.6.3 (10D573)
Report Version:  6

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread:  2
... (too long so I trimmed it)
...
    Thread 2 Crashed:
0   ???                             000000000000000000 0 + 0
1   com.apple.Foundation            0x00007fff814e4ead __NSThread__main__ + 1429
2   libSystem.B.dylib               0x00007fff86db38b6 _pthread_start + 331
3   libSystem.B.dylib               0x00007fff86db3769 thread_start + 13

Thread 2 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000100863400  rcx: 0x0000000000000000  rdx: 0x00000001001417b0
  rdi: 0x00000001001417b0  rsi: 0x0000000000000000  rbp: 0x0000000100480c90  rsp: 0x0000000100480b08
   r8: 0x0000000000000000   r9: 0x0000000100201530  r10: 0x0000000100210870  r11: 0x0000000100002120
  r12: 0x00007fff5fbfe800  r13: 0x0000000000001b07  r14: 0x00007fff814e4918  r15: 0x0000000102e0ec20
  rip: 0x0000000000000000  rfl: 0x0000000000010202  cr2: 0x0000000000000000

正如您在我的代码中看到的那样,只要我使用 performSelectorInBackground: 调用 myOtherMethod:,它就崩溃了!!

所以我的问题是:

  1. 调用 performSelectorInBackground 崩溃的任何原因?我检查了 performSelectorInBackground 方法,它在 10.6 上应该可以正常工作(苹果文档说 10.5 或更高版本),所以我真的要知道发生了什么!!!

  2. 崩溃报告对我来说真的没有意义,所以在现实生活中你怎么能用这样的报告进行调试呢?在 xcode 中,如果有任何问题,它会崩溃,并会告诉我是哪个方法导致了问题以及问题出在哪里,但是正如您所看到的,崩溃报告并没有告诉我太多!

任何帮助表示赞赏。乔什

4

1 回答 1

0

它看起来像一个损坏的堆栈。

您是否可能在 中分配大量内存myOtherMethod,例如大型 C 数组?当你调用myOtherMethod主线程时会发生什么?

于 2013-02-28T22:37:34.437 回答