【问题标题】:iPhone simulator freezing entire OSiPhone模拟器冻结整个操作系统
【发布时间】:2010-10-08 15:52:51
【问题描述】:

我有一个非常奇怪的问题。每次我在 iPhone 模拟器中运行特定代码时,我的整个 Mac 都会冻结:我无法关闭模拟器或任何其他应用程序,也无法打开任何应用程序。最糟糕的是,我无法关闭。我必须通过按住电源按钮手动强制关机。

我在 15" MacBook Pro 上运行,唯一运行的是 Xcode 和 iPhone 模拟器。我使用 Activity Monitor 关闭后台运行的所有不必要的应用程序。我还使用 OnyX 进行清理我的系统。

我正在使用 Xcode 3.2.4 和 iOS 3.2(iPad 模拟器)。

起初我怀疑这是处理器问题 - 所以我在运行 Activity Monitor 时运行了相同的代码以引发崩溃。冻结时我仍然可以在应用程序之间切换,只是无法打开/关闭任何应用程序或使用 Xcode 或 iPhone 模拟器执行任何操作。活动监视器报告说有足够的空间进行更多处理,所以不可能。我没有系统内存不足。如果我错过了任何可能有助于调试的内容,请发表评论,我会找到相关信息。我想尽快解决这个问题。

有问题的代码处理一堆计时器、3 个后台线程和大量 UDP 数据包。后台线程是:两个 UDP 接收线程和一个发送线程。后台线程运行一个恒定循环,在两个不同的端口上寻找数据。发送线程运行另一个恒定循环,但仅在其队列中有数据时才发送数据。 UDP 处理只使用 socket()、bind()、sendto()、recvfrom() 和 select() 调用。

我的印象是当前 Xcode 项目中的任何问题只会在 iPhone 模拟器中变得明显——过度发布只会使模拟器崩溃等。怎么可能使操作系统崩溃,而不是模拟器?

编辑:它在设备上运行得非常好。不会崩溃,不会报告任何内存问题,nada。

【问题讨论】:

  • 您是否尝试过运行调试器来查看调用了什么?

标签: iphone xcode ios ios-simulator


【解决方案1】:

要查看后台线程是否卡在阻塞的网络调用上,请在每个可能的阻塞调用之前和之后放置一个 NSLog(或 fprintf 到文件并 fflush),并在调试器控制台可见的情况下运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2016-04-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2014-11-21
    相关资源
    最近更新 更多