为什么XCode的LLVM GCC 4.2编译器无法生成正确的汇编?

时间:2011-11-18 09:44:17

标签: ios xcode compiler-construction compilation

我在Mac OS X 10.6.8上使用XCode 4.2并运行iOS5模拟器。 我有一个带有主项目的工作区,以及一个主要依赖的辅助项目。

我的问题是,在我对辅助项目中的.cpp或.mm文件进行更改后,即使XCode重新编译了相应的文件,它也不会生成反映代码更改的新汇编代码。因此,当我在调试器中单步执行代码时,单步执行下一行会跳过我所做的任何更改 我唯一的办法是做一个干净的建筑。

可以使用LLVM GCC 4.2或Apple LLVM Compiler 3.0编译主项目。 但是,(由于我认为关于调用父类的函数的模板类的编译错误是不合理的)我只能使用LLVM GCC 4.2编译辅助项目。

这两个项目都包含目标c文件,尽管辅助项目主要是在iOS上重用的现有c ++代码库。

提前感谢您解决此问题的任何指导。


示例行为:

常规版本 在调试过程中,想象一下踩3行代码。第一行是多次编译的旧代码。第二行和第三行只是打字和编译,没有干净+构建。当程序计数器位于第一行代码时,编译器认为所有3行代码都是一行,并且一起突出显示它们以指示当前正在执行的行。步进到下一行会跳过第2行和第3行,并将程序计数器移动到下一行有效代码行,即第4行。

清洁+构建: 这次调试器的行为符合预期。当程序计数器位于第1行时,仅突出显示它。步进到下一行会将程序计数器移动到第2行。


由于我可以编辑主项目的源代码并进行调试,可能我的问题是我没有正确指定两个项目之间的依赖关系。 在主项目的Target-> Build Phases-> Target Dependencies中,我将依赖关系设置为子项目的输出。 同样在Xcode的项目导航器中(通过命令1快捷方式查看),您可以看到子项目实际上包含在主项目中。

0 个答案:

没有答案