Archive

Posts Tagged ‘release’

Release下调试心得

July 18th, 2007 yaker No comments

上周末做的这样一次调试,不过最终并没有找到那个诡异的bug。还是明白了一些事情,首先感谢joehust,让我知道,release下调试时IDE给的变量值并不可靠。
比较可靠的办法是写一个Logger。
开始看到调试时变量的值跟我预想的完全不一样让我就很奇怪。由于代码优化之后很多变量的内容调试器观察不到,行的运行顺序也跟想象的不一样,很多行由于被优化掉无法设置断点。
可以把变量的内容输到Logger中记录下来.
简单的Logger实现

class Logger
{
public:
    template <typename T>
    Logger& operator <<(T value)
    {
        std::stringstream ss;
        ss << value;
        buffer_.append( ss.str() );
        return *this;
    }
    void Out(const char *file)
    {
        std::ofstream fileStream;
        fileStream.open(file, std::ios::ios_base::app);
        fileStream << buffer_;
        fileStream.close();
    }
    void Print()
    {
        std::cout << buffer_;
    }
private:
    std::string buffer_;
};

主要是利用stringstream吧一些常用的类型(int,char,float,double等)转换为字符串

Categories: programming Tags: ,