
BoundsChecker是运行时错误检测工具,主要用于查找程序运行期间发生的各种错误. BoundsChecker使用一种称为代码注入的技术来拦截对分配和释放内存的函数的调用. 简而言之,当程序开始运行时,BoundsChecker的DLL会自动加载到进程的地址空间中,然后它将修改函数调用以进行内存分配并在进程中释放,以便这些调用首先被传输到其代码中,然后执行原始操作的原始代码,并且在执行这些操作时,无需修改调试程序文件File的源代码或项目配置,这使得使用它非常容易和直接.
BoundsChecker还可以通过自动调整Visual C ++开发环境中的处理程序来加速应用程序开发并减少产品发布时间. 通过被测应用程序的运行,它可以提供清晰,详细的程序错误分析,自动识别静态堆栈错误和内存/资源泄漏,甚至在没有源代码的情况下也可以快速找到有问题的源代码. 第三方组件中的错误. 大多数编程错误是特定于C ++的,并且提供了清晰而详细的分析. 它可以检测和诊断静态,堆栈内存以及内存和资源泄漏中的错误. 在运行状态下,BoundsChecker会验证8700API和OLE方法,包括最新的Windows API,ODBC,ActiveX,DirectX,COM和Internet API等. 有需要的朋友请下载并使用.
BoundsChecker可以检测到的错误包括:
1. 指针操作以及内存和资源泄漏错误,例如: 内存泄漏;资源泄漏;指针变量操作不正确
2. 内存操作错误,例如: 内存读写溢出;使用未初始化的内存
3,API函数使用错误
BoundsChecker说明
1. BoundsChecker的安装并不复杂. 单击压缩包中的“ setup.exe”,然后根据提示完全安装. 完成后,有两种调用软件的方法: 一种是直接启动BC7.exe,另一种是集成在VC中. 开始VC调试时,您会发现VC ++ 6.0的菜单项和工具栏界面中还有一个额外的BoundsChecker选项,如下图所示:
2. 使用BoundsChecker来检测程序的运行时错误. 有两种使用模式可供选择: 一种模式称为ActiveCheck,另一种称为FinalCheck:
ActiveCheck

ActiveCheck是BoundsChecker提供的一种方便,快速的错误检测模式. 它可以检测到数量有限的错误,包括仅内存泄漏错误,资源泄漏错误和API函数使用错误.
如果要使用ActiveCheck模式检测程序的运行时错误,只需在VC ++集成开发环境中打开BoundsChecker函数,然后从调试状态运行程序. 这时,ActiveCheck将自动在后台运行,并随时检查程序是否处于运行状态. 发生错误,具体操作如下:
①在要确保项目处于Debug编译状态的同时,打开要在VC ++集成开发环境中测试的程序
②确保已选择VC ++集成开发环境中的[BoundsChecker /集成调试]菜单项和[BoundsChecker /报告错误和事件]菜单项. 仅当选择这两个项目时,BoundsChecker才会在程序运行过程中. 扮演角色
③在VC ++集成开发环境中选择[Build / Start Debug / Go](构建/启动Debug / Go)菜单命令,在Debug状态下运行该程序,ActiveCheck也开始在后台运行. 此时,您可以遵循制定的测试用例. 操作程序. 如果程序执行的代码中有任何错误,ActiveCheck会记录下来.
④此外,[BoundsChecker]菜单中还有一个[立即报告错误]项目. 如果未选择此项,则BoundsChecker将记录程序运行期间发现的各种错误,并在程序结束后报告.
p>
⑤选择此菜单项后,一旦BoundsChecker在程序运行期间发现错误,它将提示以下对话框进行提示. 为了便于说明,编辑器按从左到右的顺序编号为1-9,含义如下:
按钮1: 单击此按钮,表示暂时忽略此错误,然后继续执行程序
按钮2: 单击此按钮,它将立即跳至出现问题的代码行. 解决问题后,单击[Build / Start Debug / Go]菜单项以继续执行程序并执行检测.
按钮3: 单击此按钮可将错误添加到忽略的错误列表中. 当此问题再次发生时,BoundsChecker将不会报告它.
按钮4: 单击此按钮可立即终止程序的执行
按钮5: 单击此按钮可显示当前的应用程序和内存使用情况
按钮6: 单击此按钮,您将获得有关当前错误的帮助信息
按钮7和8: 这两个按钮的功能与[BoundsChecker \立即报告错误]和[BoundsChecker \报告错误和事件]菜单命令完全相同,因此在此不再赘述.
按钮9: 单击此按钮可以显示/隐藏与错误和特定错误代码行的位置有关的函数调用堆栈
⑥完成所有操作后,退出程序后,BoundsChecker将显示发现的错误列表. 我们需要分析列表中列出的错误,以确定错误的原因和位置.
在错误检测结果列表中,它列出了有关ActiveCheck在程序执行期间检测到的内存泄漏,资源泄漏和API函数使用错误的所有相关信息,如下所示:
在左侧窗口中,列出程序在内存,资源和API功能方面的问题,包括: 问题的类型,问题发生的次数,如果是内存泄漏,丢失了多少内存,问题发生的代码位置,依此类推. 当单击鼠标选择记录时,与错误记录对应的函数调用堆栈将显示在右侧窗口中. 当您用鼠标双击错误记录时,您将找到导致错误的源代码
FinalCheck

在ActiveCheck模式下测试程序时,基本上不会影响程序的运行速度,但缺点是检测到的错误类型受到限制,即仅内存泄漏错误,资源泄漏错误和API函数可以检查使用错误. BoundsChecker提供了另一种用于检测错误的模式-FinalCheck. 除了检测ActiveCheck可以检测到的错误之外,它还可以发现ActiveCheck无法检测到的许多错误,包括: 指针操作错误,内存操作溢出boundschecker 破解版,未初始化的使用. 内存等,对于ActiveCheck可以检测到的错误,FinalCheck可以提供有关该错误的更多详细信息. 因此,我们可以认为FinalCheck是ActiveCheck的增强版本. 我们付出的代价是: 程序运行速度会变慢,有时甚至会变慢.
如果要在FinalCheck模式下测试程序,则不能使用VC ++集成开发环境提供的编译器链接器来构建程序. 您必须使用BoundsChecker提供的编译器链接器来编译链接器. 当BoundsChecker的编译器链接器编译该链接器时,它将在程序中插入一些错误检测代码. 具体步骤如下:
①准备工作:
a. 在VC ++集成开发环境中打开要测试的项目
b. 单击[Build / Configurations ...]菜单命令,然后在弹出对话框中单击“添加”按钮. 在“配置”编辑框中添加为BoundsChecker创建的文件夹的名称(此名称是任意的),在“从以下位置复制设置”组合框中选择“ XXX-Win32调试”项,然后单击“确定”按钮,然后单击“关闭”按钮.
c. 单击[构建/设置活动配置...]菜单命令,选择刚为BoundsChecker创建的文件夹,然后单击确定按钮. 这样,将在BoundsChecker编译链接器时生成的中间文件和可执行程序放在此文件夹中. 选择[BoundsChecker /使用BoundsChecker重建全部]菜单命令以重新编译并链接程序,即此时BoundsChecker将错误检测代码添加到被测程序的代码中. 编译并链接后,BoundsChecker将在您为BoundsChecker构建的文件夹中生成可执行文件. 至此,以FinalCheck模式测试程序的准备工作已经完成. 此时,您可以启动程序以开始测试.
②确保在VC ++集成开发环境中选择了[BoundsChecker /集成调试]菜单项和[BoundsChecker /报告错误和事件]菜单项
③单击[Build \ Start Debug]菜单,然后选择“ Go”菜单项. 程序开始在Debug状态下运行
④根据您制定的测试用例来运行程序
⑤当BoundsChecker检测到错误时,它将弹出一个窗口向您报告,您可以在此时进行处理,也可以等待所有操作完成boundschecker 破解版,然后在退出程序后分析列出的错误. 这完全取决于您是否选择了[BoundsChecker /立即报告错误]菜单项

⑥退出程序后,BoundsChecker将提供错误检测结果的列表. 此错误列表与查看ActiveChecker提供的错误列表的方法完全相同,只是该列表中报告的信息将更加详细. / p>
3. 检查Win32 API函数的兼容性
BoundsChecker还提供功能检查在不同平台上的程序中使用的Win32 API函数的兼容性. 此功能与前面提到的ActiveChecker和FinalCheck模式无关. 它是一个单独的功能. 具体的操作方法如下:
①启动[BoundsChecker / View / Compliance Report]菜单命令
②在对话框中,选择程序承诺运行的平台,以及需要遵守的其他标准(标准C和扩展标准C),然后单击“确定”按钮. BoundChecker将提供兼容性测试报告.
4. 使用BoundsChecker测试程序时,需要该程序的源代码. 如果没有源代码,BoundsChecker也可以打开EXE文件来执行它,但是获得的测试结果通常是不正确的,因此没有太大意义
BoundsChecker错误要忽略:
在某些情况下,我们需要忽略BoundsChecker报告的一些错误,这些情况包括:
1. 误报
BoundsChecker在程序中指定了某些代码,但经过仔细检查,我们确认该程序没有此错误. 这是BoundsChecker的误报. 该工具毕竟是一种工具,并且只能根据为其开发的算法进行操作,因此会出现误报,但不能轻易将某个错误识别为误报,因此必须仔细分析错误以确定这是一个真正的假阳性
2. 第三方代码
BoundsChecker指定的错误的位置在第三方提供的代码中,包括第三方提供的库,DLL,OCX等. 在这种情况下,我们还必须仔细检查以确保不是我们的错误造成的. 由于使用第三方代码引起的,如果最终确定不是我们的原因,则可以忽略此类错误报告
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-145530-1.html
我们的军队好久没打仗了