关于代码调试boundschecker的遭遇

     为了使用BoundsChecker这个传说中的工具,不得不把VS2008的工程转到VC6.0去,结果好多编译和链接错误:

  1. VC6.0的MFC类库的版本不一样吧,一些比较新的方法VC6.0都不认识,想_itoa_s就必须改成itoa,命名空间stdext也不认识,直接注掉;
  2. stafx.h里面include了<afxsock.h>,在另一个地方又include了<winsock2.h>,导致超级多变量重定义,注掉<afxsock.h>就OK了,但是为啥VS2008就顺利编译链接了呢?。。。
  3. 一个很诡异的问题,BEGIN_MESSAGE_MAP。。里面的ON_BN_CLICKED(IDC_BTN_START, &CTPServerDlg::OnBnClickedBtnStart),这个消息响应函数之前应该是不加“&”的吧?为啥VS2008里面加上也能编译通过?这个我也没去研究。。
  4. 最后出现了链接错误,然后在“头文件”“源文件”中添加进去就OK了

最后出现了很多waring,不过可以运行了。。

 

Boundschecker确实很强大,比如未初始化的内存,内存泄露,资源xx的。。。不过后来发现,它有点过分了。。还是需要无视它检查的一些泄露,比如每次出现在onexit.c中的错误,网上说直接无视这个,我还无视了其他两个异常,因为实在找不到那两个跟我的代码有什么关系。。。。最后发现500客户端并发的时候会出现access violation的错误,调试一下发现是xtree文件里面的(好像这个调试跟boundsChecker没啥关系),OK,既然是xtree,那肯定是map或者list的错误了。检查发现有几个map的多线程同步始终存在这漏洞,一一加临界区,测试。。基本OK了。。最后好像boundsChecker也没派上啥大用,只不过让我增加了一些信心而已。。。其实vld这玩意也还行,还对编译器没有要求。。

 

希望我的Server不要再出问题了吧。。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值