81

我第一次启动该应用程序时,一切似乎都运行良好。我会按下停止按钮,做一些工作,当我再次启动它时,它似乎在加载任何东西之前就崩溃了。按停止,再次点击运行,它工作正常。直到我重复这个过程。

这是 xcode 使用“Thread 1:signal SIGABRT”突出显示错误的地方。显然这里没有什么用处。

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class]));
    }
}

除了 (lldb) 之外,调试控制台什么也没有显示(所以我想它正在停止,此时没有崩溃)所以,当我执行 a 时,BT这就是我得到的:

(lldb) bt
* thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
    frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101
    frame #2: 0x04a7057b libsystem_sim_c.dylib`abort + 140
    frame #3: 0x01dc0b4e GraphicsServices`GSRegisterPurpleNamedPort + 348
    frame #4: 0x01dc069f GraphicsServices`_GSEventInitialize + 123
    frame #5: 0x01dc0c1f GraphicsServices`GSEventInitialize + 36
    frame #6: 0x000163f9 UIKit`UIApplicationMain + 600
    frame #7: 0x00001d0d Guitar Chord Poker HD`main(argc=1, argv=0xbffff32c) + 141 at main.m:16
    frame #8: 0x00001c35 Guitar Chord Poker HD`start + 53
(lldb) 

这是我到目前为止所做的:

  • 执行了“清洁”
  • 我已经重置了模拟器并重置了我的电脑
  • 我已经注释掉了视图控制器中的所有代码,仍然崩溃
  • 我已经注释掉了应用程序委托中的所有代码,仍然崩溃
  • 但是....我已经在 Xcode 之外的设备上运行了该应用程序,它似乎工作得非常好。
  • (编辑)我已经删除/重新安装了 xcode,以及来自各种缓存文件夹的所有内容(模拟器、文档)(这会阻止 xcode 在新下载后自动重新安装旧的)。尽管如此,仍然找不到命令行工具的保存位置。仍然崩溃。

尽管如此,应用程序仍然每秒/其他启动时崩溃。

问题是在最近的 Xcode 更新之前我没有任何问题。会不会是 Xcode 的错误?

(编辑)我也在运行最新的 OSX 开发者版本。会不会有干扰?

4

3 回答 3

75

似乎是OS X 10.8.4 和 LLDB 的组合。正如 kenster 所说,切换到 GDB 可以解决问题。

编辑:
这是由调试服务器中的竞争条件引起的(我听说)。

如果您想继续使用 LLDB,这里有一个修复方法:当应用程序已经在模拟器中运行时,不要单击运行,而是在 Xcode 中将其终止 (⌘-.),说“我爱 Xcode”5 次,然后再次运行 (⌘- R)。它不会崩溃,我测试过。


Xcode 4.6.3中修复。

于 2013-06-05T21:25:50.213 回答
11

我也有这个问题。看看这个帖子。Xcode 4.6.2 应用程序在每秒运行一次时崩溃

基本上将您的调试器从 LLDB 更改为 GDB。我不敢相信这是因为 LLDB 有问题。

于 2013-06-05T13:30:18.287 回答
3

切换到 GDB 或重新启动设备/主机并不能解决我的环境中的问题。

但是,将相关 XCode 方案中的 Run 目标修改为不再自动启动,而是改为“等待HelloWorld .app 启动”

唯一的缺点是这意味着在设备上手动启动应用程序。然后调试器将被连接。

于 2013-09-30T12:00:31.503 回答