iOS应用每隔一次启动便崩溃,找不到错误


81

第一次启动该应用程序时,一切似乎运行良好。我将按一下“停止”按钮,做一些工作,当我再次启动它时,它似乎崩溃了,甚至无法加载任何东西。按停止,再次单击运行,它可以正常工作。直到我重复该过程。

这是xcode使用“线程1:信号SIGABRT”突出显示错误的地方。显然这里没有什么用。

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

调试控制台除了(lldb)之外什么都没有显示(因此,我想它停止了,目前还没有崩溃)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的最新开发人员版本。会干扰吗?


您是否尝试过在iOS模拟器和已连接/已断开连接的设备上运行一个空项目?
Reck Hou

@ReckHou好的,是的,关于一个全新项目,同样的问题。可能是什么原因?除了重新安装xcode以外,还可以解决吗?

我们已经有两个人遇到这个问题。(在上次更新之后,我得到了类似的错误)目前,我使用AppCode直到下一个已修复错误的Xcode更新为止。(我的问题stackoverflow.com/questions/16113036/...
伊利亚·伊雷因

5
今天早些时候更新到OSX 10.8.4后,我开始看到相同的内容。我在OSX 10.4.3上的Xcode 4.6.2没问题。如果我从LLDB切换到GDB,问题似乎消失了,因此可能是由调试器(Xcode 4.6.2 LLDB与OSX 10.8.4组合)引起的。
Matej Bukovinski 2013年

1
更新到10.8.4后,我会得到相同的结果。每隔一次发射。重置模拟器,重新启动Xcode,没有任何区别。立即在main()中崩溃。每隔一次运行。感谢GDB的想法-在这里工作。
Graham Perks 2013年

Answers:


75

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

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

如果您想继续使用LLDB,请使用以下修复程序:在应用程序已经在模拟器中运行时,不要单击“运行”,而是在Xcode中将其杀死(⌘-。),说5次“我爱Xcode”,然后再次运行(⌘- R)。它不会崩溃,我对其进行了测试。


Xcode 4.6.3中修复


它不能很好地工作。发射几乎每隔一次就令人窒息。到目前为止,切换到GDB的解决方案要稳定得多,直到Apple修复其问题为止。
强尼

2
您和询问者是我个人最喜欢的人。这让我发疯,我正要把我的MBP送修。
Kalle

随着10.9和Xcode 5的发布,GDB已被删除,现在全部为LLDB。但这一切都应该起作用!
新秀

啊!回到不推荐使用的编译器,只是为了修复最新技术的编译器中的一个(确实很痛苦的)错误是一个大问题……但是别无选择,我必须这样做。
MonsieurDart

更新到4.6.3做到了-我什至不知道该版本已经发布。
David H

11

我也有这个问题。看一下这篇文章。Xcode 4.6.2应用程序每秒钟运行一次便崩溃

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


哦,天哪。我已经习惯了,每当我运行一个项目时,我都会变得愤怒起来。但是什么也没发生。谢谢你的堆 将在我的错误报告中让Apple知道。
新秀

2
感谢您提供的信息,昨天整天让我发疯。为什么在搜索到这里之前,我总是等到我拉出所有(剩余的)头发后才开始!大声笑。
Bertie 2013年

3

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.