用VSTS代码验证工具捕捉C/C++错误
日期:2007年7月19日 作者: 查看:[大字体 中字体 小字体]-
对一个C++本机代码(Native Code)开发者来说,Visual Studio Team System对整个软件开发周期都提供了支持,VSTS源代码注释使开发者在静态代码分析或单元测试中,可以用方法参数前置或后置的有效条件来注释方法,且当注释违例时,会有相应的编译器警告,所以,可以这样说,VSTS提供了许多功能来帮助本机程序开发者。本文将着眼于VSTS验证程序,它是一个分析工具,用于监控非托管代码的执行,并可以发现如不正确的内存分配、句柄使用等等错误。
与此相比,动态分析是检查那些传递给系统函数的关键变量值,以发现问题的,当方法被调用时,将会探测到某些非法参数,并上报给开发者;而使用非法参数时,某些问题不能被发现,只会在后续情况如内存崩溃、非正常程序退出等情况显现出来。
以应用程序验证程序开始
启动应用程序验证程序是一件非常简单的事,只需选择“调试-以应用程序验证程序开始”即可,如图1所示。
图1:启动应用程序验证程序

第一次使用应用程序验证程序时,Visual Studio会提示你下载一个额外的DLL,此DLL将用于检查句柄及堆,可能需要管理员权限来安装这个补丁。
对应用程序验证程序的大多数使用者来说,最难之处在于要记住运行这个验证程序,而不是启动一次标准的调试会话。假定在使用验证程序时,也可以使用标准调试,建议启动验证程序会话(Shift+Alt+F5),虽然比启动调试会话(F5)多按了两个键,但还是值得的。这样一来,就可以在每次产生调试会话时,都充分利用验证程序了。
当应用程序验证程序探测到一个问题时,它会停止执行流程,并显示一个如下的对话框,如图2所示:
图2:验证程序停止信息
通常来说,诊断此类问题一般为查看能导致验证程序停止执行的句柄、锁、或堆指针信息,并回溯到崩溃发生之前的执行点。然而,这不会总是最简单的调试方法,在堆或文件崩溃是问题的唯一原因时,你不一定记得起来要启动一个调试过程。
当验证程序停止执行流程时,一个详细的问题描述也会被添加到任务视图中,如图3所示。任务视图中的信息便于观看,而图2的对话框则需要先“消失”,开发者才能进入到调试器检查变量值。

图3:验证程序任务列表视图
此处多说一下任务列表,它可显示一个单独的应用程序验证程序窗口,其对停止事件提供了最详细的信息(见图4)。

图4:验证程序窗口
应用程序验证程序检查VSTS应用程序验证程序主要专注于以下三个核心领域:操作系统句柄、锁、堆内存。以上三种类型的检查,句柄是最简单的——应用程序验证程序会检查句柄以保证它不为空(null)、句柄指向了正确的操作系统对象类型、句柄未用于DLLMain函数中的等待操作(这可是解决死锁问题的最好方法)。
锁检查就包括以下方面:
- [1] [2] 下一页
-
- 用VSTS代码验证工具捕捉C/C++错误 相关文章:
- ·TAB键在AutoCAD捕捉功能中的妙用
- ·用VSTS代码验证工具捕捉C/C++错误
- ·在ASP.NET应用程序中捕捉身份验证状态的变化
- ·C#捕捉摄相头的数据流
- ·捕捉DataGrid的双击事件(C#版本)
- ·寓教于乐 猫捉老鼠Flash小游戏自己做
- ·JS捕捉网页浏览器窗口的关闭与刷新
- ·3DSMAX教程:大蟒蛇捕捉青蛙
- ·寓教于乐猫捉老鼠Flash小游戏自己做
- ·捕捉运行很久的SQL
- 用VSTS代码验证工具捕捉C/C++错误 相关软件
- ·FC《捉鬼敢死队2》模拟器
- ·WinSnap(图像捕捉)绿色汉化版 V1.1.8
- ·WSnap (屏幕捕捉工具) v1.3.79 绿色汉化版
- ·捉拿逃妃
- ·捉狂辣妹妹
- ·捉弄人的搞笑游戏
- ·捉弄人的搞笑游戏
- ·地下捉鬼队
- ·小李软件界面捕捉V2.5 正式版
- ·伊妹捕捉V2.01
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·用c#监控网络流量
- ·C#编写的windows计算器-源代码
- ·飞机订票系统设计
- ·C/C++笔试、面试题目大汇总
- ·《俄罗斯方块》程序编写详解
- ·Windows API-GDI入门基础知识详解(2)
- ·socket编程原理
- ·打字游戏
- ·七年IT奋斗纪实及感悟
- ·C #中的几个线程同步对象方法
- ·牛顿和拉格朗日插值算法
- ·VC++动态链接库编程之MFC扩展 DLL
- ·C# 操作文件
- ·如何用C#编写文本编辑器
- ·c#操作word表格
- ·编程特例篇——LOGO语言
- ·Raw Socket(原始套接字)实现Sniffer(嗅探)
- ·C#编程中的 New 关键词的几种用法
- ·实战开发 C# 索引器学习笔记
- ·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
特别推荐
- ·C#程序开发中的常用函数汇总
- ·C#数据库操作的三种经典用法
- ·C/C++笔试、面试题目大汇总
- ·Beej的网络socket编程指南
- ·socket编程原理
- ·C语言的常用库函数使用方法分析及用途
- ·在C语言中如何处理时间和日期
- ·C++设计模式之Singleton
- ·VC++动态链接库编程之MFC扩展 DLL
- ·TCP/IP网络重复型服务器通信软件的设计
- ·DirectX游戏开发入门
- ·经典与现代的结合:在MFC中集成RAD .NET框架
- ·Windows API-GDI入门基础知识详解(2)
- ·Visual C++ 入门精解
- ·C#基础概念二十五问
- ·用C#实现pdf文件的完整性验证
- ·成为嵌入式程序员应知道的0x10个问题
- ·TCP/IP编程实现远程文件传输
- ·几个C#编程的小技巧
- ·C# 编码规范和编程好习惯
