Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 可可计划可以';不可阻挡_Cocoa_Debugging_Xcode4_Exception Handling - Fatal编程技术网

Cocoa 可可计划可以';不可阻挡

Cocoa 可可计划可以';不可阻挡,cocoa,debugging,xcode4,exception-handling,Cocoa,Debugging,Xcode4,Exception Handling,我正在尝试编写一个使用串行端口的OSX应用程序。我找到了一个示例(cocoa),并在Xcode 4中运行了它。在第一次运行时,它打开了端口,我可以与硬件交换数据 如果我试图更改端口,程序就会出错。风车启动,用户界面无响应。我不能从Xcode停止程序,也不能从终端终止程序或强制退出。强制退出Xcode不能做到这一点。虽然PID随着终端的终止而消失,但UI仍然存在着欢快旋转的风车 唯一的出路是重新启动。欢迎提供有关如何追踪错误代码的任何想法。我不熟悉Cocoa/Objective C,所以简单的术语

我正在尝试编写一个使用串行端口的OSX应用程序。我找到了一个示例(cocoa),并在Xcode 4中运行了它。在第一次运行时,它打开了端口,我可以与硬件交换数据

如果我试图更改端口,程序就会出错。风车启动,用户界面无响应。我不能从Xcode停止程序,也不能从终端终止程序或强制退出。强制退出Xcode不能做到这一点。虽然PID随着终端的终止而消失,但UI仍然存在着欢快旋转的风车


唯一的出路是重新启动。欢迎提供有关如何追踪错误代码的任何想法。我不熟悉Cocoa/Objective C,所以简单的术语更好。

很可能它变成了僵尸。它应该出现在
ps auxww
(或类似)中,状态为“Z”。活动监视器也可能仍然显示它

这在使用硬件(如串行端口)时比较常见。僵尸的出现可能有两个原因,最有可能是第一个原因:

  • 进程在某种类型的内核调用中被阻塞,这是不可中断的
  • 进程已退出,但其父进程尚未确认(通过wait()或类似方式)
  • 在第一种情况下,它通常是一个基本的bug或某种类型的设计缺陷,您可能没有任何好的选择,除非准确地找出什么代码路径会让问题变得棘手,并避免这种情况


    在第二种情况下,解决方案通常很简单——找到僵尸的父进程并杀死它。根据需要重复此操作,直到您的僵尸被调用wait()以获取它的父进程采用(如果没有其他操作,launchd将执行此操作)。

    提醒我电影的速度。“如果我不继续向运行循环提供事件,它将爆炸!!!”发布你的代码,Mike-我们不知道你在做什么或如何做。代码可能太大,无法发布。我找不到我从哪里下载的压缩项目。我很乐意通过电子邮件发送给你。谢谢你的建议。他们很可能会让比我更有经验的人受益。我在ps auxww中会是什么样子?活动监视器是位于XCode顶栏中心的大盒子吗?我将尝试更多的步骤,看看是否能找到关于:1的任何内容。如何找到父进程?活动监视器位于/Applications/Utilities中
    ps
    是您在终端中运行的东西。它也位于/Applications/Utilities中。