利用BouncCheck进行单元测试

今天下载了最新的BoundCheck V10.1试用版进行试用,感觉还是蛮好用的,至少比V6.0.1好用,该版本直接可以嵌入到VC2003及以后版本的Visual stdio中进行单元测试,VC2010也Support, BoundCheck的网站如下,可以下载试试,试用期为14天。

http://www.componentsource.com/products/devpartner-visual-c-boundschecker-suite-visual-studio-concurrent-users/index-zt-twd.html

 

BoundsChecker 是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误。BoundsChecker错误检测范围主要包括:For VS2008

 ()       指针和泄露错误
       (1)
接口泄露。
       (2)
内存泄露。
       (3)
资源泄露。

   (4)未分配的指针错误。

   (5)指针的释放问题。

 
 (
) 内存错误

       (1)
动态存储溢出。

    (2)使用未初始化的内存。
       (3)
无效的句柄被锁定。
       (4)
句柄没有被锁定。
       (5)
内存分配冲突。
       (6)
栈空间溢出。
       (7)
静态存储溢出。

(
)  APIOLE错误
      (1)API
函数返回失败。
      (2)API
函数未执行。
      (3)OLE
接口方法的变量无效。
      (4)OLE
接口方法失败。
      (5)
线程调用库函数错误。

 

以下绝对每一点的每个Item进行Check。

1.       指针操作和内存、资源泄露错误。

 

1)      内存泄露。(同接口泄露)

如片段程序:TCHAR *pszStr = new TCHAR[10]; 如下图

 

利用BouncCheck进行单元测试_第1张图片

 

2)      资源泄露。

       如片段程序:

       HANDLE  hMute = CreateMutex(NULL, TRUE, NULL);程序中不调用CloseHandle

    这中情况下也可以检测出来,如下图:

    利用BouncCheck进行单元测试_第2张图片

3)      未分配的指针错误。

如代码片段:

TCHAR *ptszStr = new TCHAR[20];

_tcscpy(ptszStr, _T("hello"));

delete [] ptszStr;

if(ptszStr != NULL)

{

   _tcscpy(ptszStr, _T("world"));

   _tprintf(ptszStr);

}

BoundCheck检测结果如下图所示:


4)      指针的释放问题。

如以下程序片段:
TCHAR *ptszStr = new TCHAR[20];

_tcscpy(ptszStr, _T("hello"));

delete ptszStr;    //delete [] ptszStr;

 运行结果boundCheck检测出结果如图:

     利用BouncCheck进行单元测试_第3张图片

2.      内存操作方面的错误。

1)        内存读,写溢出。

如片段程序:

TCHAR *pszStr = new TCHAR[10];

    pszStr[10] = '/0';

    delete [] pszStr;

检测结果如下图:

 

 

2)        使用未初始化的内存。

如程序片段:BYTE *pbyData; BYTE *pDestData = pbyData;BoundCheck检测结果如图所示:

 

 

3. APIOLE错误

 

还有挺多点未没有比较合理的Sample或者有的是BoundCheck没有检测出来的,在以后的使用过程中如有发现其他点比较好的Sample再继续更新。

 

 

 

你可能感兴趣的:(api,单元测试,null,delete,存储,byte)