首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Rust中是否有“优化调试体验”编译器标志?

在Rust中是否有“优化调试体验”编译器标志?
EN

Stack Overflow用户
提问于 2020-06-20 22:46:31
回答 1查看 1.1K关注 0票数 2

在C++中,可以使用"-Og“或"/Og”(可能还有其他编译器上的其他标志)来启用“优化调试体验”的编译标志。

此标志支持非常基本的优化,这些优化不会干扰调试体验(据我理解)。但这确实意味着编译器所做的琐碎或“免费”的优化是为程序启用的,这样您就不必担心这个问题了。

GCC最优选择中,“优化调试体验”是:

优化调试经验。-Og应该是标准编辑编译调试周期的最优选择,在保持快速编译的同时提供合理的优化水平和良好的调试经验。这是一个比-O0更好的选择,用于生成可调试的代码,因为一些收集调试信息的编译器通过-O0时是禁用的。

我想知道在某个地方是否有一个选项可以实现同样的福利,或者是否计划了任何这样的选择。理想情况下,它可以通过货物和以尽可能跨平台的方式启用。

请注意,我不是在问“opt级别”,它相当于"-O1、-02等“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-20 22:58:28

生锈货物简介中,您将看到名为dev的默认编译配置文件如下所示:

代码语言:javascript
运行
复制
[profile.dev]
opt-level = 0
debug = true
debug-assertions = true
overflow-checks = true
lto = false
panic = 'unwind'
incremental = true
codegen-units = 256
rpath = false

由于debug = true意味着存储完整的调试信息,这意味着项目的编译对象已经准备好进行调试,尽管没有优化。目前货物中没有旗子,也没有沙沙来“优化调试体验”。虽然我们可以确定调试符号是保留的,但与GCC所说的“调试信息在-O0__中丢失”不同,应用优化并且仍然有良好的调试体验是一种折衷的游戏:特别是,LLVM提供了一些保证,但是在调试模式下导航和处理属性的能力可能会受到损害(相关的LLVM文档页面)。

如果我们采用“改进调试体验”的真正含义,这是可以根据具体情况,通过调整编译配置文件来完成的。例如,在实时程序开发(如视频游戏开发)中,应用一些代码优化以使运行时性能可以承受是一种常见的要求。查看Rustc关于代码-gen选项的书以查看在这一端可以做的事情。每个opt-level都会以自己的方式为这种体验做出贡献。

另请参阅:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62492560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档