Debugging 如何在同一源模块中生成不同级别的优化?

Debugging 如何在同一源模块中生成不同级别的优化?,debugging,optimization,gcc,compiler-optimization,Debugging,Optimization,Gcc,Compiler Optimization,我正在使用GCC构建我的嵌入式C应用程序,我用GDB调试它。该应用程序由一个运行在主机处理器上的程序和多个运行在多个加速器DSP内核上的多个程序组成 我的主机(控制)程序有一个非常简单的主函数,通过一个短循环调用一个更大的函数来完成一些事情并激活加速器。我的问题是,当使用优化进行编译时,就主函数中的断点位置而言,调试会更加困难。构建w/o优化时,另一个函数以次优方式编译 一个可能的解决方案是将宿主项目分离为两个源文件,并使用不同级别的优化。但是,我想把它保存在同一个文件中 有没有一种方法(pra

我正在使用GCC构建我的嵌入式C应用程序,我用GDB调试它。该应用程序由一个运行在主机处理器上的程序和多个运行在多个加速器DSP内核上的多个程序组成

我的主机(控制)程序有一个非常简单的主函数,通过一个短循环调用一个更大的函数来完成一些事情并激活加速器。我的问题是,当使用优化进行编译时,就主函数中的断点位置而言,调试会更加困难。构建w/o优化时,另一个函数以次优方式编译

一个可能的解决方案是将宿主项目分离为两个源文件,并使用不同级别的优化。但是,我想把它保存在同一个文件中

有没有一种方法(pragma?)可以指示编译器在同一源代码单元中执行不同级别的优化?

对于最近的GCC(例如GCC4.6),您可以使用更改优化,例如

 #pragma GCC optimize ("-02")
你也可以用同样的方法

IIRC,它出现在GCC 4.5中,在4.6中工作得更好,因此您需要最新版本的GCC。

对于最新的GCC(例如GCC4.6),您可以更改优化,例如

 #pragma GCC optimize ("-02")
你也可以用同样的方法


IIRC,它出现在GCC 4.5中,在4.6中工作得更好,因此您需要一个最新版本的GCC。

我确实回答了,但您为什么不查看GCC的文档?@BasileStarynkevitch-感谢您的回答。实际上,我简单地看了一下安装时附带的600页gcc文档。诚然,它很简短,也许我错过了这一部分。另一个原因可能是因为我不知道这个选项,所以它更像是“在黑暗中拍摄”。我们使用的版本是GCC4.4.3,就在上周,我们开始处理4.7。因此,根据您的回答,在我们使用的旧版本中它不可用。仅供参考:4.7尚未发布!哦,旧版本是4.3.0,不像我上面写的那样。这并不重要……然后让你的工具工买一个新的GCC主干。4.7的第一阶段(实验性最强的阶段)在几周前就结束了,所以我认为最近的主干(即4.7)比2011年7月的主干要好。别忘了经常更新GCC4.7:人们现在正在纠正其中的错误!我确实回答了,但为什么你不查看GCC的文档?@BasileStarynkevitch-谢谢你的回答。实际上,我简单地看了一下安装时附带的600页gcc文档。诚然,它很简短,也许我错过了这一部分。另一个原因可能是因为我不知道这个选项,所以它更像是“在黑暗中拍摄”。我们使用的版本是GCC4.4.3,就在上周,我们开始处理4.7。因此,根据您的回答,在我们使用的旧版本中它不可用。仅供参考:4.7尚未发布!哦,旧版本是4.3.0,不像我上面写的那样。这并不重要……然后让你的工具工买一个新的GCC主干。4.7的第一阶段(实验性最强的阶段)在几周前就结束了,所以我认为最近的主干(即4.7)比2011年7月的主干要好。别忘了经常更新GCC4.7:人们现在正在纠正其中的错误!