一个简单C++的调试代码

    技术2022-05-11  52

    /////ACE是个好东西//在学习ACE的过程中,对它的调试进行了简单的浏览,//以下的一些方法便是来源ACE的启发.代码非常简单,个人认为还算实用而已.

    //以下代码仅供学习参考,实际应用请自行负责.

    //Author:古斌亮

    //e-mail:lonly_gun@hotmail.com///

     #include <time.h>

    #include <string>using std::string;

    /////下面的logger类唯一的功能就是//    可以运行时对调试信息进行重定向///class dbg_logger{public: virtual ~ dbg_logger(){}

    public: static void set(FILE * fp){_fp = (FILE*)fp;}

    public: static void dbg_log(const char * format,...) {  va_list args;  va_start(args,format);  vfprintf(_fp,format,args);  va_end(args); }

    private: static FILE * _fp;};

    //static FILE * dbg_logger::_fp = (FILE*)stdout;

    /////下面这个宏定义可以实现对时间,日期,调试代码行,文件的调试输出,在应用中可以依据//实际情况选择使用///#define DBG_TRACE(format) / dbg_logger::dbg_log("[%s %s line %d in %s]:",__DATE__,__TIME__,__LINE__,__FILE__); / dbg_logger::dbg_log##format;

    /////比如可以简单如下使用/////#define DBG_LOG(format) /// dbg_logger::dbg_log("[line %d in %s]:",__LINE__,__FILE__); /// dbg_logger::dbg_log##format;

    /////下面debuger类和DBG_DEBUG宏//  可以实现运行时对一块区域代码的程序流程进行简单跟踪,///class dbg_debuger : public dbg_logger{protected: string  _dbg_string;public: dbg_debuger(const char * s):_dbg_string(s) {  //dbg_logger::  dbg_log("%s %s entry %s .../n",__DATE__,__TIME__,_dbg_string.c_str()); } virtual ~dbg_debuger() {  //dbg_logger::  dbg_log("%s %s leave %s .../n",__DATE__,__TIME__,_dbg_string.c_str()); }};

    #define DBG_DEBUG(format) / dbg_logger::dbg_log("[line %d in %s]:",__LINE__,__FILE__); / dbg_debuger _debuger_(format)

    /////该函数对DBG_DEBUG进行了演示///void test_debug(){ DBG_DEBUG("test_debug");

     //test 2 {  DBG_DEBUG("test 2"); }}

    /////下面对以上的调试进行了演示///int _tmain(int argc, _TCHAR* argv[]){ DBG_DEBUG("_tmain");

     DBG_TRACE(("trace test %d ... /n",1));

     DBG_TRACE(("trace test %s .../n","string"));

     test_debug();

     system("PAUSE");

     return 0;}


    最新回复(0)