调试例程
C 运行库的调试版本提供了许多诊断服务使调试程序更容易并允许开发人员:
在调试期间,直接单步进入的运行时函数。
解析断言、错误和异常
跟踪堆分配并防止内存泄漏
报告调试消息给用户
使用这些实例, _DEBUG 标记必须被定义。 所有任何这些实例不执行应用程序的发布版本。 想要了解更多关于新的调试的实例信息,参见 CRT Debugging Techniques。
C 运行库实例的调试版本
例程 |
用途 |
.NET Framework 等效项 |
---|---|---|
计算表达式并且当结果为FALSE时,生成调试报告 |
||
类似于 _ASSERT ,但是错误表达式包括在产生的报告里面 |
||
确认在调试堆中内存块的完整性 |
||
设置断点。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
生成有用户消息的调试报表并将报告送到三个可能的目标 |
System::Diagnostics::Debug::Write,System::Diagnostics::Debug::Writeline,System::Diagnostics::Debug::WriteIf,System::Diagnostics::Debug::WriteLineIf |
|
为所有堆里的 _CLIENT_BLOCK 类型,调用一个应用程序提供的功能 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
当发生大量内存泄漏时,转储所有在调试堆中的内存块 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
验证在本地堆中的指定的内存块,它包含有效调试堆块类型的标识符 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
验证本地堆中的特定指针 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
验证用于读取和写入的指定的内存范围是有效的 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
获取当前状态的调试堆并存储在一个由应用程序提供的 _CrtMemState 结构。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
比较两个内存状态的重大不同并返回结果 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
因为指定的检查点被执行或从程序执行的开始,请转储在堆中有关对象的信息 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
为用户可读的形式中的一个指定的内存状态,转储一个调试头信息 |
||
返回与给定的调试堆块的指针相关联的块类型/子类型。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
通过利用连接到C运行时调试内存分配过程中安装一个客户端定义的配置功能 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
设置在指定的排序对象分配编号上设置断点 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
检索或修改 _crtDbgFlag 标志的状态来控制调试堆管理器的分配行为 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
安装一个每次被调用的应用定义的函数,调试转存函数被调用来转存 _CLIENT_BLOCK 类型的内存块 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
识别文件或流被用作于由一个特定的报告类型 _CrtDbgReport 的目标文件 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
通过利用连接到C运行时调试报告程序过程中安装一个客户端定义的配置功能 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
通过挂接到C运行时调试申报程序来安装或卸载一个客户端自定义报告函数。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
指定常规目标文件通过 _CrtDbgReport 产生特定报告类型 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
跟踪应用程序的进程产生一个调试报告,通过调用 _CrtDbgReport 一个格式字符串和一个可变数目的参数。 不提供源文件和行号信息。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
类似于 _RPTn 宏,但其中提供报告发出请求的源文件名和行号 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
在具有额外的空间调试堆标头分配指定数目的内存块并覆盖缓冲区 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
调整指定的块在堆中的内存通过展开或收缩块 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
释放在堆上的内存块 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
创建指定的相对路径名的绝对路径或完整路径名,使用 _malloc_dbg 来分配内存。 |
||
获得当前工作目录,使用 _malloc_dbg 分配内存。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
在具有额外的空间调试堆标头分配内存块并覆盖缓冲区 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
计算堆上内存块的大小 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
通过移动和/或调整块重新分配在堆中的内存块 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
复制一个字符串,使用 _malloc_dbg 来分配内存。 |
||
生成的名称,您可以使用它来创建临时文件,使用 _malloc_dbg 来分配内存。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
调试程序可以用于单步执行源代码,对于大多数其它的C运行时例程在调试过程中。 但是,微软考虑到一些技术的所有权,因此,对于这些实例不提供源代码。 大部分实例属于异常处理或浮点处理的组,但是其他一些也包括在其中。 下表列出了这些实例。
C 运行时实例是不可用的源代码形式的
*虽然源代码用于大多数可用的实例,它执行内部调用到另一个未提供源代码实例。
一些 C 运行时函数和 C++ 运算符的行为与应用程序的调试版本不同。(注意,应用程序的调试版本可以通过定义 _DEBUG 标志或通过与C运行时库的调试版本链接来完成。)性能差异通常包含额外的功能或实例提供支持的调试进程的信息。 下表列出了这些实例。
在应用程序的调试版本不同的行为的实例
C abort 实例 |
C++ delete 运算符 |
C assert 实例 |
C++ new 运算符 |