VS调试小技巧

教你如何优雅的输出调试信息

Posted by hyang on May 23, 2019 Total views

在使用visual studio调试代码的时候我们经常想多输出一些调试信息方便自己定位问题,但是调试完成之后,程序运行的时候这些调试信息又成为了累赘。有没有什么办法既能在debug的时候收集信息,又能在release的时候优雅的输出呢

一般最容易想到的就是自己定义一个DEBUG宏来控制输出

#define DEBUG 0
...cpp
if(DEBUG){
    fout << "输出调试信息" << endl;
}

但是,这需要我们修改代码,总归是不太方便的

那么有没有一种更为优雅的方式来解决这个问题呢?

那答案必须是有的。

vs在release模式下会定义一个宏NDEBUG,通过判断这个宏,我们就可以得到是release模式还是debug模式了,具体如下:

#ifndef NDEBUG
#define LOG(expression) (void(::std::cout<<(expression)<<::std::endl))
#else
#define LOG(expression) (void(0))
#endif

这样在你要输出的地方使用LOG("输出调试信息")替换掉cout就好了

在vs中使用debug模式才会有输出,换成release之后就是干净清爽无残留

致谢

感谢殷TO提供的思路