利用BouncCheck进行单元测试

本文介绍了使用BoundCheck V10.1进行单元测试的体验,该工具能嵌入到Visual Studio中,检测包括指针错误、内存错误、API和OLE错误等多种运行时错误。例如,它可以发现内存泄露、未分配的指针错误、资源泄露等问题,帮助开发者提高代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天下载了最新的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]; 如下图

 

 

2)      资源泄露。

       如片段程序:

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

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

   

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检测出结果如图:

    

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

1)        内存读,写溢出。

如片段程序:

TCHAR *pszStr = new TCHAR[10];

    pszStr[10] = '/0';

    delete [] pszStr;

检测结果如下图:

 

 

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

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

 

 

3. APIOLE错误

 

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

 

 

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值