是否有一个「;“优化调试体验”;Rust中的编译器标志? 在C++中,您有使用“-Og”或“/OG”(以及其他编译器上的其他标志)来启用“优化调试体验”的编译标志。
此标志支持不干扰调试体验的非常基本的优化(据我所知)。但这确实意味着编译器所做的琐碎或“免费”优化可以为程序启用,这样您就不必担心了 从中,“优化调试体验”是: 优化调试体验-Og应该是 选择标准的编辑编译调试周期,提供 合理的优化级别,同时保持快速编译 并且有很好的调试经验。这是一个比-O0更好的选择 生成可调试代码,因为某些编译器传递 调试信息在-O0处被禁用 我想知道是否有一个地方可以实现同样的好处,或者是否有任何这样的选择计划。理想情况下,可以通过货物和尽可能跨平台的方式实现 请注意,我并不是在询问“opt levels”,它相当于“-O1,-02等”。在中,您将看到默认编译配置文件,命名为,如下所示:是否有一个「;“优化调试体验”;Rust中的编译器标志? 在C++中,您有使用“-Og”或“/OG”(以及其他编译器上的其他标志)来启用“优化调试体验”的编译标志。,rust,rust-cargo,Rust,Rust Cargo,此标志支持不干扰调试体验的非常基本的优化(据我所知)。但这确实意味着编译器所做的琐碎或“免费”优化可以为程序启用,这样您就不必担心了 从中,“优化调试体验”是: 优化调试体验-Og应该是 选择标准的编辑编译调试周期,提供 合理的优化级别,同时保持快速编译 并且有很好的调试经验。这是一个比-O0更好的选择 生成可调试代码,因为某些编译器传递 调试信息在-O0处被禁用 我想知道是否有一个地方可以实现同样的好处,或者是否有任何这样的选择计划。理想情况下,可以通过货物和尽可能跨平台的方式实现 请注意,我
[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
意味着存储了完整的调试信息,这意味着项目的编译对象已经准备好进行调试,尽管没有进行优化。目前,Cargo和rustc都没有“优化调试体验”的标志。虽然我们可以确保保留调试符号,但与GCC所述的“某些过程中的调试信息在-O0
中丢失”不同,应用优化并仍然拥有良好的调试体验是一种折衷游戏:特别是,LLVM提供了一些保证,但是在调试模式下导航和处理属性的能力可能会受到影响()
如果我们理解了“改进调试体验”的真正含义,那么这可以通过调整编译配置文件,在个案的基础上完成。例如,实时程序开发(如视频游戏开发)中的一个常见要求是应用一些代码优化,以便运行时性能可以承受。看看这方面可以做些什么。每个opt级别
都会以自己的方式为体验做出贡献
另见:
[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
意味着存储了完整的调试信息,这意味着项目的编译对象已经准备好进行调试,尽管没有进行优化。目前,Cargo和rustc都没有“优化调试体验”的标志。虽然我们可以确保保留调试符号,但与GCC所述的“某些过程中的调试信息在-O0
中丢失”不同,应用优化并仍然拥有良好的调试体验是一种折衷游戏:特别是,LLVM提供了一些保证,但是在调试模式下导航和处理属性的能力可能会受到影响()
如果我们理解了“改进调试体验”的真正含义,那么这可以通过调整编译配置文件,在个案的基础上完成。例如,实时程序开发(如视频游戏开发)中的一个常见要求是应用一些代码优化,以便运行时性能可以承受。看看这方面可以做些什么。每个opt级别
都会以自己的方式为体验做出贡献
另见: