如何在BCB中使用CodeGuard

一、为什么写这篇东西

自己在使用BCB5写一些程序时需要检查很多东西,例如内存泄漏、资源是否有释放等等,在使用了很多工具后,发觉BCB5本身自带的工具--CodeGuard,非常不错,使用也挺方便的,但是摸索了很久(以及翻查了一些资料,包括HELP)才算是会用了。写这篇文章的目的希望有这方面的问题的朋友可以借鉴一下,大家互相学习,共同进步。我的联系方法:Email:szbug@szbug.com,希望志同道合的朋友来信互相交流。以下这篇文章算是拼凑出来的一篇文章,一些资料是在书上找的,一些是在HELP上看到了。首先声明本人的语文及英语水平十分有限,有写错或者翻译错的地方,还望给位指出。特别感谢XX的爱情帮我校对……

二、什么是CodeGuard

CodeGuard是在是C++Builder5才出现的一个工具。CodeGuard是C++Builder中一个程序在运行时期的检查器,用于检查内存或者资源的使用,以及函数调用的验证。

CodeGuard可以检测到以下的程序运行期错误:

非法的内存释放。

无效的句柄或者文件流。

非法指针。

使用已被释放的指针。

内存泄漏。

分配但最后没有释放的内存变量。

传递给函数的不正确的参数(包括VCL以及Win32函数)。

函数返回值的错误。(包括VCL以及Win32函数)。

例如:在应用程序中试图多次释放相同的资源(或者已经释放了的资源)、试图访问已经被释放的内存。

三、在BCB5中怎样使用CodeGuard--配置CodeGuard

如果要使用CodeGuard的话,必须有些代码编译进你的应用程序,所以在改变以下这些设置后。必须全部重新编译(切记切记!!!)。第一、打开应用程序的工程选项的CodeGuard页框,把CodeGuard Validation前面打勾.

工程选项里,还有其他三个选项。第一个选项允许CodeGuard检查指向局部、全局和静态变量的无效指针和数据溢出。第二个选项允许CodeGuard检测对非法的(无效的、已删除的)对象的方法的调用。第三个选项允许CodeGuard验证内嵌指针的访问(在某些资料上说,开启这个选项会造成程序执行速度变得很慢,我测试过了,如果工程不是很大的话不是很明显,可以接受。)一般的调试是开打所有的选项(默认选择也是全部打开)。

通过CodeGuard的配置工具,可以配置CodeGuard的一些选项,在命令行方式执行CGCONFIG.EXE。可以见到一个对话框.

Preferences标签页用于设置CodeGuard这个工具的全局选项。Enable选项可以在应用程序不重新编译的情况下使用或者不使用CodeGuard,一般来说是都是启用她。如果使用CodeGuard的话,建议设置工程选项来禁止或者使用CodeGuard。Stack fill frequency填充栈频率是检测对运行期栈的无效访问。Report和Error Message Box选项是设置CodeGuard报告错误的方式。在Report里,Stiatistics选项打开CodeGuard输出分配和释放内存的统计表、被使用的Win32API的调用、资源的使用情况,并在日志文件中加上一个模块列表,以便检查错误。Resource Leaks选项是告诉CodeGuard在应用程序结束后报告资源泄漏的情况。选定了Error Message Box选项后,当应用程序不在IDE里运行时,如果CodeGuard检测到错误信息,那么将采用一个对话框的方式告诉使用者。其他选项一般不常用,可以参见C++Builder的联机HELP。

CodeGuard配置工具中的Resource Options和Function Options页框允许用户对应用程序的资源、文件和函数调用设置各种跟踪选项。除非特殊的原因需要改变默认的配置,否则使用缺省的设定就行了。Function Options页上有一个比较常用的选项就是记录一个特定函数的每次调用情况。

Ignored Modules页框允许你告诉CodeGuard,当检测的时候可以忽略一些运行期的错误(一般是指某些DLL或者包)。这个选项一般不常用。

时间: 2024-11-02 09:50:17

如何在BCB中使用CodeGuard的相关文章

如何在BCB中使用DirectX

这是一个简要的指南,可以指导你如何在BCB中使用DirectX SDK. 我在这里假定你的BCB的安装路径在:C:\Borland\CBuilder\,DirectX SDK在C:\dx5sdk\ 设置 Borland C++ Builder #include 这是许多人遇到的麻烦, Borland在BCB的\Include路径下提供了DirectX的头文件, 如果只是把c:\dx5sdk\sdk\inc\加到BCB的include路径下,它会进行如下步骤: 查找 C:\Borland\Cbui

如何在BCB中调试Active Form

1. Project-->Options-->Compiler-->点击Full Debug 2. Project-->Build All Projects 3. 在需要调试的代码处加断点. 4. Project-->Web Deployment Options-->Directories and URLs (1)Target dir(Full path of the deployed OCX) 填写你的OCX发布的地址,如C:\ccrun\www\ (2)Target

BCB中的RTTI机制

BCB中的RTTI机制RTTI在BCB中其实有两个意义.首先,针对一般标准的C++中所定义的,RTTI是所谓的Run-Time Type Identification的缩写.传统的程序语言中,所谓的数据型态仅在Compile-Time有所作用.举例而言,您宣告了一个变量a,并且指定其型态为整数.您如何在Run-Time期间知道他的型态是整数呢?很遗憾的是,在原来的C/C++中您是无法知道这样的事情的.或者会问,这样的信息有何作用?若是您考虑对象的继承关系,您就会发现其重要性了.举例而言,若您有下

qt-如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新

问题描述 如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新 本人是个菜鸟在做一个简单的同学录系统,这是进入之后的界面 我想实现鼠标选取一个表格点击"修改同学信息"之后能对它在修改并且修改确定后能同步刷新MySQL数据库而且表格中的数据也更新. 下面是我的代码:#include ""record.h""#include ""ui_record.h""#include &qu

Win7系统如何在excel中添加word文档结构图

  Win7系统如何在excel中添加word文档结构图          方法一: Word提供了一个很方便的功能--文档结构图,通过文档结构图可以在整个文档中快速浏览并追踪特定的文件内容位置.文档结构图是一个独立的窗口,类似于大纲视图,它能够显示文档的标题,单击文档结构图中的标题后,Word就会自动转到文档中的相应标题,并将其显示在窗口的顶部.用户可以单击菜单""视图"-"文档结构图"来打开它.但是EXCEL中没有提供文档结构图,那么如何管理数据量较大

如何在java中实现读取一个txt文档中的随机一行

问题描述 如何在java中实现读取一个txt文档中的随机一行 如题,如何在java中实现读取一个txt文档中的随机一行? 主要就是怎么随机读取 解决方案 根据楼上的说法,来总结一下吧,总体来说,就是将文件全部都读取出来,每一行存储到一个数组或集合中,然后再通过产生随机数,来对这个数组或是 集合进行随机的访问.这样一来就解决了 解决方案二: 文本文件只能顺序读,不能随机读.你的需求只能是读取文本文件每一行到一个arraylist,然后得到下标范围,产生一个随机数,取那一行 解决方案三: http:

如何在ftp中开放tar权限

问题描述 如何在ftp中开放tar权限 看到有大神说,想在ftp中get一个目录mydir,可以直接使用命令get mydir.tar即可,ftp服务会自动打包的.可是为什么我做不到.该如何开放ftp中的tar权限呢 解决方案 ftp本身没有你说的功能,要看你的服务器用的是什么

以前收集的一些资料---如何在ASP中通过ODBC调用Excel中的数据

excel|odbc|数据                如何在ASP中通过ODBC调用Excel中的数据    在ASP中通过ODBC调用Excel中的数据方式和普通的通过ODBC调用数据库的方式有一些不同的地方.下面将介绍如何通过ODBC在ASP中使用Excel的数据.    在使用的过程中,要注意的是你需要使用的ODBC驱动为:Microsoft ODBC Driver for Excel. 下面给出一个例子来具体说明如何调用的过程:1.在Excel的电子表格中新建一个叫Range的表单a

多线程-如何在OpenGL中渲染多个视频

问题描述 如何在OpenGL中渲染多个视频 程序使用win32开发,视频使用ffmpeg进行帧的截取,然后贴到OpenGL纹理中,渲染一个视频的话不用使用到多线程,处理能力足够快,但是现在需要渲染多个视频,不可能在主线程完成,两三个视频基本上窗口就卡死了.后来改用多线程,建立了两个OpenGL的上下文环境,一个线程负责更新纹理,主线程负责渲染,但是更新纹理的线程依然是照着视频一个个照顺序截,截完再通知主线程画出来,本来以为这样的结构应该没问题,结果渲染速度依然达不到要求,现在想问问有什么办法做到