0

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

“警告:找不到目标文件”/Users/mike/Projects/simbl/build/SIMBL.build/Deployment/SIMBL.build/Objects-normal/i386/SIMBLPlugin.o” - 没有可用于“/Users/ 的调试信息”迈克/项目/simbl/src/SIMBLPlugin.m”。

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

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

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

catchUpSpeed 为 .03f

对错误消息有任何想法吗?这个错误是如何产生的,如何避免?我无法对它做出正面或反面。看起来很简单的数学。

感谢您的阅读!

4

1 回答 1

1

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

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

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

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

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

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

于 2013-09-03T09:08:14.323 回答