如何在发布版本中创建用于调试的Rust函数或宏?

时间:2017-04-11 17:03:14

标签: debugging rust

在调试版本中,我想在几乎所有OpenGL调用之后检查OpenGL错误以简化调试。由于这是一项代价高昂的操作,我不想在发布版本中执行此操作。现在我正在使用以下功能:

pub fn debug_panic_on_errors() {
    if cfg!(debug_assertions) {
        get_errors().unwrap();
    }
}

我认为这种方法总会被完全优化后我是否正确?是否有更好的,更具前瞻性的方式?

1 个答案:

答案 0 :(得分:2)

在发布模式下,该功能将扩展为if false { … },这非常容易优化,所以是的,您可以按原样使用它。

如果你是偏执狂,你可以#[cfg]两个功能,如

#[cfg(debug_assertions)]
pub fn debug_panic_on_errors() { 
    get_errors().unwrap();
}

#[cfg(not(debug_assertions))]
pub fn debug_panic_on_errors() {
}

以便在解析期间选择结果,以确保我们不依赖于优化器。但我不是真的推荐这个......