接口和bug问题示例

上次文章里谈了接口和bug问题。 继续谈谈我对这个浅薄的认识。这里继续谈一下技巧(示例工程ftp://vckpub:vckbase@218.75.9.231/CarrotRemindVS.rar)。assert TRACE 在开发中起到重要的作用。 但是似乎还是不够的。 我们需要更好的debug工具。 开发中, 错误是无法预知的。 那么我们需要知道跟踪程序运行时刻的流程, 而不是你去猜想程序到底怎么运行, 这样是十分低效的。我们需要开发一个debug工具, 来记录每次运行时的情况, 一看记录文件, 错误就一目了然。 比如类的构造和析构函数加上debug日志, 记录类的new和delete. 又如记录函数的返回值,很快能发现, 那个函数调用失败了等等。

如何开发一个debug的工具。 我这里给出一组以宏的形式出现的接口。具体实现上就怎么方便怎么写了。 程序是定时提醒。 有兴趣可以到下载。

下面是debug日志文件内容

DEBUG:  CSS_RemindManager::GetInstance [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::GetInstance: new mInstance [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::CSS_RemindManager [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::AddRemind [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::AddRemind: create a DoRemind [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::CreateDoRemind(...) [110-1-25 9:12:10]
DEBUG:  CSS_DoRemind::CSS_DoRemind [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::CreateId [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::AddRemind: get a id=0 [110-1-25 9:12:10]
DEBUG:  CSS_RemindManager::AddRemind [110-1-25 9:12:10]

接口

#define CSS_ASSERT(X) /
 do { /
    assert X; /
 }while(0)


#ifdef CSS_NLOGGING
#define CSS_RETURN(Y) do{ return (Y); }while(0)
#define CSS_DEBUG(X) do{}while(0)
#define CSS_ERROR(X) do{}while(0)
#define CSS_ERROR_RETURN(X, Y) do{ return (Y); }while(0)
#else
#define CSS_RETURN(Y) /
 do { /
    return (Y); /
 }while(0)

#define CSS_DEBUG(X) /
 do { /
 CSS_Logger::GetInstance()->WriteDebugLogger X;  /
 }while(0)

#define CSS_ERROR(X) /
 do { /
    CSS_Logger::GetInstance()->WriteErrorLogger X;  /
 }while(0)

#define CSS_ERROR_RETURN(X, Y) /
 do { /
 CSS_Logger::GetInstance()->WriteErrorLogger X;  /
 return (Y); /
 }while(0)
#endif


class CSS_UTILITY_EXPORTS CSS_Logger
{
public:
 CSS_Logger(void);

 ~CSS_Logger(void) ;

public:
 static CSS_Logger* GetInstance();

public:
 bool WriteErrorLogger(const char* e, ...);

 bool WriteDebugLogger(const char* d, ...);

private:
 bool WriteLogger(const std::string& log);

private:
 static CSS_Logger *mInstance;
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值