首页
社区
课程
招聘
[原创]复杂程序中的常用调试代码
发表于: 2012-12-1 14:44 5517

[原创]复杂程序中的常用调试代码

2012-12-1 14:44
5517

在我参加实际项目开发中,对于一些大型复杂的项目的调试往往感到力不从心。即使vs或者gdb已经足够强大,在一些并发的程序或者让人头痛的多线程程序中,你要去设置个断点来调试往往是噩梦的开始。实践告知我们,这个时候用print往往返璞归真成为最有效的调试手段,但限于其功能的局限型,我们可以单独写一些工具宏(函数),给我们调试带来便利。

例如在我们一个大型gis平台中(win32、wince)常用下列工具来调试:

#ifndef DEBUG_INFO  
  
#ifdef _DEBUG  
  
#ifdef WINCE  
#define DEBUG_INFO(info) /  
    { /  
        ConsoleInfoOut(info)  /  
    } /  
  
#define ConsoleInfoOut(info) /  
    { /  
        wstring m_output_info; /  
        wostringstream iss; /  
        iss << info; /  
        m_output_info = iss.str(); /  
        OutputDebugStringW(m_output_info.c_str()); /  
    } /  
  
//OutputDebugStringW(L"/n"); /  
  
#define DEBUG_INFO_MEMORY(info) /  
    { /  
        DEBUG_INFO(info); /  
        MEMORYSTATUS mst; /  
        mst.dwLength = sizeof(MEMORYSTATUS); /  
        GlobalMemoryStatus(&mst); /  
        OutputDebugStringW(L"total phys: "); /  
        DEBUG_INFO(mst.dwTotalPhys); /  
        OutputDebugStringW(L" avail phys:"); /  
        DEBUG_INFO(mst.dwAvailPhys); /  
        OutputDebugStringW(L" total virtual:"); /  
        DEBUG_INFO(mst.dwTotalVirtual); /  
        OutputDebugStringW(L" avail virtual:"); /  
        DEBUG_INFO(mst.dwAvailVirtual); /  
    } /  
          
#else // WINCE  
#define DEBUG_INFO(info) std::cerr << info << endl;  
#endif // DEBUG  
  
#else  
#define DEBUG_INFO(info)  
#endif // #ifdef _DEBUG  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 6
支持
分享
最新回复 (2)
雪    币: 64
活跃值: (134)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嗯 内核编程还是print好用
2012-12-1 22:25
0
雪    币: 51
活跃值: (61)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
printk
2012-12-2 12:56
0
游客
登录 | 注册 方可回帖
返回
//