快捷搜索:

如何在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或者包)。这个选项一样平常不常用。

您可能还会对下面的文章感兴趣: