【发布时间】:2013-10-24 07:41:13
【问题描述】:
在 XCode4 下构建应用程序插件时遇到了一个非常奇怪的问题。 (苹果 LLVM 4.2) 有问题的项目为外部应用程序构建了一个插件文件,该文件基本上是一个包,但具有不同的扩展名。 该插件本身正在对视频流进行一些操作,并且具有相当高的吞吐量要求,因此需要适当优化的代码。
但是,一旦我启用除无 [-O0] 以外的任何优化级别,应用程序将永远加载我的插件,因此我的插件永远不会被使用。 从我目前的调试来看,我看不到我的代码失败的任何明显位置, 或与未优化的代码版本相比采用不同的路径。 早期版本的代码用于在 Xcode3 下使用优化编译良好, 但是添加新功能需要更高的性能,并且不再可以接受不使用优化。
所以我希望有人可以提供一些调试/跟踪此问题的提示? 这都是非常标准的 C++,带有一些 pthreads 的东西。 遗憾的是,我还没有针对这种特殊情况开发调试技能或技巧。
主机应用程序确实提供了一个示例项目,该项目在启用优化的情况下可以正常编译。但是我正在寻找调试技术方法,而不是简单地逐行重建我的项目以尝试找到有问题的代码。
提前致谢,
詹姆斯。
PS。很好,这是我在这里的第一篇文章。顺便说一句,很棒的资源。
【问题讨论】:
-
我真的不知道这种情况的任何细节,但这里有一些建议从哪里开始寻找: 1:尝试编译具有不同优化级别的不同文件(如果您的文件中有多个文件)插件)并确定它是否只是优化导致问题的一个文件(您甚至可以通过使用#pragmas 为每个函数设置优化来进一步分解它)。 2:尝试在主机进程上运行 gdb 并在插件长时间加载期间暂停,以查看它在哪里花费了所有时间。
-
哦,谢谢,我没有想到要在不同的优化级别编译特定文件,这将是一个很大的帮助。
标签: xcode macos optimization compiler-construction