文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发C/C++用VSTS代码验证工具捕捉C/C++错误
精品推荐
特别推荐
·C语言编程常见问题解答之常用函数的包含文件(1)
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
热点TOP10
·C语言的常用库函数使用方法分析及用途
·水滴石穿C语言之指针综合谈
·C语言图形处理
·C语言编程常见问题解答之常用函数的包含文件(1)
·Windows下C语言网络编程快速入门
·进程调度模拟程序
·Visual C++ 入门精解
·socket编程原理
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)

用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函数中的等待操作(这可是解决死锁问题的最好方法)。

  锁检查就包括以下方面:

  Ø 检查初始化操作是否未完成或过头了

  Ø 释放保持锁的内存或卸载相应模块

  Ø 锁是否具有非法所有者

  Ø 已损坏的锁

  堆检查也遵循上述两种检查的相近模式,将会检查是否有损坏的堆、非法的堆删除操作、非法的堆句柄、堆溢出。

  配置应用程序验证程序

  应用程序验证程序需要进行配置的地方非常少,如图5所示:

点击放大此图片

  图5:验证程序配置

  除去可以把这三个主要的验证功能打开或关闭之外,你还可以与保护页(guard page)一起使用堆验证,或直接指定堆保护页的位置(保护页提供了对崩溃最初的探测,以防止其占用更多的内存)。堆保护页的默认位置为分配区域的末尾,它可以探测到缓冲区溢出;然而,如果想要探测非常罕见的某些缓冲区欠载(即底面通过),你也能把它挪到分配区域块的起始处。

  应用程序验证工具是VSTS众多工具中最容易使用的一个,只需简单地选择此菜单项就可以开始你的调试会话了,让它来帮助你追踪那些讨厌的本机代码问题吧。

(出处:清风学院


[1] 




上一篇:最high-tech的WebEx会议也疯狂

下一篇:Photoshop鼠绘实例:圆锥的立体表现
相关文章:
·解决与HTTP 500 – 内部服务器错误错误信息有关的问题
·XP系统登陆原理及其验证机制概述
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·3GP手机视频转换工具WinAVI
·QQ空间免费换皮肤代码
·迎刃而解——破解密码的常用工具
·如何在QQ空间加入播放器代码
·免费领养QQ空间五级花最新技巧及代码放送
·局域网故障专题 网络故障排除工具
·如何使用系统配置实用工具
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot