诊断服务
Microsoft 基础类库提供了调试程序更易于的许多诊断服务。这些诊断服务包括在运行时,在运行时,使您能够跟踪您的程序的内存分配,转储对象的内容,并打印调试消息的宏和全局函数。宏和全局函数诊断服务的分组为以下类别:
泛型诊断宏
泛型诊断函数和变量
对象诊断功能
这些宏和函数进行 CObject 从派生的任何类具有 MFC 的调试版本和发布版本。但是,在发行版中除 DEBUG_NEW 和 VERIFY 之外均不执行。
在调试库中,所有分配的内存块括起来与一系列 “临界字节”。如果这些字节由迷惑不解内存写入打扰,则诊断实例可以报告问题。如果包含行:
#define new DEBUG_NEW
在实现文件,所有对 new 将存储文件名和行号内存分配发生位置的。函数 CMemoryState::DumpAllObjectsSince 会显示此附加信息,您便可以标识内存泄漏。还引用类 CDumpContext 有关诊断输出的更多信息。
此外, C 运行库还支持您可以使用调试应用程序的安装诊断功能。有关更多信息,请在 " 运行库参考 调试实例 引用。
MFC 泛型诊断宏
,如果指定的表达式计算为在库,的调试版本的 FALSE 输出消息然后中止程序。 |
|
测试对象是指定类的对象从指定的类派生的或类。 |
|
通过调用其成员函数 AssertValid 测试对象的内部有效性;通常重写从 CObject。 |
|
提供一个文件名,任何对象分配的行号调试模式有助于查找内存泄漏。 |
|
类似于 ASSERT ,但不测试该表达式的值;用于只应执行的代码调试模式。 |
|
提供在库的调试版本的 printf相同的功能。 |
|
类似于 ASSERT ,但计算表达式在库的发布版本以及在调试版本。 |
MFC 泛型诊断变量和函数
CDumpContext 信息发送到调试输出窗口或为调试时间全局变量。 |
|
控件调试内存分配器的行为的全局变量。 |
|
使用的全局变量通过的测试 SCODE 以确定它是否为错误,并且,如果是这样,引发相应的错误。 |
|
检查所有当前分配的内存的完整性。 |
|
如果调用,当在调试器中,转储对象的状态时,在调试时。 |
|
生成当前堆栈的图像。此功能静态总是链接。 |
|
启用内存泄漏转储。 |
|
启用和禁用跟踪的内存。 |
|
验证内存块正确地分配。 |
|
验证内存地址范围在程序的区域内。 |
|
确定到字符串的指针是否有效。 |
|
启用对每个内存分配的函数。 |
MFC 对象诊断功能
执行在任何 CObject的指定功能 - 支持运行时类型检查的派生类。 |
|
执行在任何 CObject的指定功能 - 随 new的派生对象。 |