代码之家  ›  专栏  ›  技术社区  ›  user2740864

openFrameworks:Math killing调试器?

  •  0
  • user2740864  · 技术社区  · 11 年前

    在openFrameworks中使用lerping矩形类。然后我试图将它实例化为一个数组,但它因错误而崩溃:

    “警告:找不到对象文件”/Users/mike/Projects/simbl/build/simbl.build/Deployment/simbl·布uild/Objects normal/i386/SIMBLPlugin.o“-没有可用于”/Users/mike/PProjects/simbl/src/SIMBLPlugin.m“的调试信息。

    发布版本比调试版本稍微稳定一些。

    当注释掉这两行时(在其类的整个数组中连续调用的函数内),它运行得很好。

    pos.x = catchUpSpeed * mouseX + (1-catchUpSpeed) * pos.x;
    pos.y = catchUpSpeed * mouseY + (1-catchUpSpeed) * pos.y;
    

    catchUpSpeed为.03f

    对这个错误消息有什么想法吗?这个错误是如何产生的,如何避免?我搞不清楚。看起来数学很简单。

    感谢您的阅读!

    1 回复  |  直到 11 年前
        1
  •  1
  •   Jason Molenda    11 年前

    如果发生这种情况,您不应该看到崩溃,或者更确切地说,崩溃不应该由此警告引起/与此警告有关。

    有两种方法可以在Mac OS X/iOS上使用调试信息构建应用程序:“DWARF”和“DWARFwithdSYM”。(这些是Xcode项目“构建设置”中的选项)

    “DWARF”表示调试信息存在于 .o (对象)文件。它不会复制到应用程序的最终可执行二进制文件中。您的应用二进制文件具有 指针 返回到对象文件中的调试信息。这有助于加速链接&运行周期。但为了让它发挥作用,您的对象文件需要位于与构建应用程序时相同的位置。将你的应用程序复制到另一台计算机可能会破坏这一点。删除构建中间版本也会导致同样的问题。“DWARF”调试信息方案是为在本地桌面上进行主动开发而设计的 。o 在调试应用程序时,文件将保留在原位,不会被删除。

    “DWARF with dSYM”意味着当你的应用二进制文件链接在一起时,另一个命令( dsymutil )运行以创建所有调试信息的链接版本-- .dSYM 捆这会将对象文件中的所有调试信息收集到一个单独的bundle中,并且它位于二进制文件旁边。如果您想将二进制文件复制到另一个系统以运行&调试它,带上dSYM,一切都会正常工作。

    我不确定你是如何使用构建系统的,所以这种安排在调试时会失败,但如果你在幕后做一些事情 SIMBLPlugin.o 对象文件不存在。如果你正在调试你的应用程序,试着用dSYM将你的项目更改为DWARF,你应该会没事的。

    如果Xcode崩溃,那么它不太可能与来自调试器的警告消息有关。但是,如果您在当前(Xcode 4.6等)版本的工具中看到了这一点,那么提交一份错误报告是值得的。 http://bugreport.apple.com/ -包括其中一个实例中的崩溃报告器文本,这将是它们开始的地方。

    推荐文章