关于如何在BCB中使用CodeGuard

时间:2010-05-08 15:41:44  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:HELP )才算是会用了。写这篇文章的目的希望有这方面的问题的朋友可以借鉴一下,大家互相学习,共同进步。我的联系方法: Email : szbug@szbug.com ,希望志同道合的朋友来信互相交流。以下这篇文章算是拼凑出来的一篇文章,一些资料是在书上找的,一些是在 HELP 上看到了。 二、 什么是 CodeGuard CodeGuard 是在是 C++Builder5 才出现的一个工具。 CodeGuard 是 ...
  正文:

一、 为什么写这篇东西

自己在使用 BCB5 写一些程序时需要检查很多东西,例如内存泄漏、资源是否有释放等等,在使用了很多工具后,发觉 BCB5 本身自带的工具—— CodeGuard ,非常不错,使用也挺方便的,但是摸索了很久(以及翻查了一些资料,包括 HELP )才算是会用了。写这篇文章的目的希望有这方面的问题的朋友可以借鉴一下,大家互相学习,共同进步。我的联系方法: Email : szbug@szbug.com ,希望志同道合的朋友来信互相交流。以下这篇文章算是拼凑出来的一篇文章,一些资料是在书上找的,一些是在 HELP 上看到了。

二、 什么是 CodeGuard

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

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

l 非法的内存释放。

l 无效的句柄或者文件流。

l 非法指针。

l 使用已被释放的指针。

l 内存泄漏。

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

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

l 函数返回值的错误。(包括 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 或者包)。这个选项一般不常用。

四、 使用 CodeGuard

使用 CodeGuard 其实很简单,只要像之前那样配置了 CodeGuard ,然后运行你的应用程序,无论你的应用程序是否在 IDE 中运行, CodeGuard 都将会按照 CodeGuard 配置的选项监视你的应用程序。同时,他还会向一个日志文件里输出所有的信息(文件存放在你的工程所在目录中,文件名和工程名一样,扩展名为 .cgl )。例如你的工程名为 C:wordTest.prg ,那么 CodeGuard 的日志文件为 C:WordTest.cgl ,它是一个文本文件,可以用任何的文本编辑器来编辑它。

在 IDE 中,可以通过 < 菜单 >View->Debug Window->CodeGuard Log 来查看 CodeGuard 的日志文件(或者用快捷键 Ctrl+Atl+O )。

如果你的程序在运行是出现属于 CodeGuard 监视的错误的时候, CodeGuard 会把它输出到 CodeGuard Log 中。并将错误信息用一颗“树”的方式显示(使用很方便,就像使用 Windows 的资源管理器一样简单)。每个错误都可以展开,以显示某种错误类型所特有的一些信息。例如:一个资源那个地方使用了、分配以及释放;发生错误时的栈信息;并且指出了出错的代码行。这样就可以很快的找到错误的根源! "关于如何在BCB中使用CodeGuard"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/VC/2010-05-08/13929.html


关键字:

关于《关于如何在BCB中使用CodeGuard》文章的评论

站内搜索: 高级搜索

热门搜索:关键字 键盘  Windows PHP CPU style 系统 Google td tr IP function