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