【问题标题】:OS X program won't compile EXC_BAD_ACCESSOS X 程序不会编译 EXC_BAD_ACCESS
【发布时间】:2012-01-22 15:08:12
【问题描述】:

我正在尝试学习 XCode 和 Mac 编程。我正在尝试有关 XCode 4 的书中的程序,并且我正在使用 4.2.1。我被告知错误不是下面标记的代码行。我如何/在哪里可以调试这个?搜索没有找到我理解的任何内容。

在 main.m - "Thread1 程序收到信号'EXC_BAD_ACCESS'。

int main(int argc, char *argv[])
{
    return NSApplicationMain(argc,(const_char **)argv); //error here   
}

我在 View|Navigators 中没有找到 Stack Navigator。

也许这就是你要找的东西?

我删除了整个项目并重新开始。现在我在同一行得到一个 SIGABRT。搜索它并没有导致任何解决方案。

【问题讨论】:

  • EXC_BAD_ACCESS 不是编译错误。另外,请使用const char 而不是const_char
  • 你的程序编译得很好。请注意,此错误不会显示在问题导航器中,它应该是空的(如果不是,那么您还有其他一些事情要修复!)。编译错误和调试器指示器看起来不同;你看到的是后者。
  • 请编辑您的问题以包含整个 Xcode 窗口的屏幕截图,其中调试器控制台可见,堆栈导航器可见并设置为完全展开(一直向右滑动)。
  • 我编辑添加了屏幕截图,但我现在看不到它。我找不到堆栈导航器。
  • WTP - 下划线是错字。 XCode 正在将一个看起来像小“U”的字符放在空白处。

标签: xcode cocoa xcode4


【解决方案1】:
 return NSApplicationMain(argc,(const_char *)argv); 

去掉第二个星号

【讨论】:

  • 第二个星号是必需的。
【解决方案2】:

我发现添加异常断点非常有帮助(通过Breakpoint Navigator左下角的+按钮并将其设置为在抛出所有异常时中断。单击列表中的蓝色箭头进行切换根据需要打开和关闭。它将在引发异常的源代码位置停止。

【讨论】:

    【解决方案3】:

    Zombie 对象非常适合调试不良访问。

    在 Xcode 4.1 及更高版本中,“运行”阶段的“诊断”选项卡上还有“启用僵尸对象”复选框。 - 来自How to enable NSZombie in Xcode?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-17
      • 2016-08-22
      • 2013-08-27
      • 2011-07-08
      • 2012-01-13
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      相关资源
      最近更新 更多