调试实例
C 运行库的调试版本提供了调试程序更易于并允许开发人员的许多诊断服务:
步骤直接添加到调试期间的运行时函数。
解析断言、错误和异常
跟踪堆分配并防止内存泄漏
报告调试消息给用户
若要使用这些实例,必须定义 _DEBUG 标志。 所有任何这些实例不执行应用程序的发布版本。 有关如何使用新的更多信息调试实例,请参见 调试技术的 CRT。
调试 C 运行库实例的版本
实例 |
使用 |
.NET framework 等效 |
---|---|---|
,该结果为 false 时,请计算表达式并生成调试报告 |
||
类似于 _ASSERT,但是,在生成的报告包含该失败的表达式 |
||
确认的完整性内存分配在调试堆 |
||
设置断点。 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见 平台调用示例。 |
|
生成与用户消息的调试报表并将报告分成三个可能的目标 |
系统:: 诊断:: 调试:: 写入, 系统:: 诊断:: 调试:: Writeline, 系统:: 诊断:: 调试:: WriteIf, 系统:: 诊断:: 调试:: 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。 但是, Microsoft 将一些技术所有权的,因此,因此,对于这些实例不提供源代码。 大部分实例属于异常处理或浮点处理的组,但是,某些其他中。 下表列出了这些实例。
不可用的源代码形式的 C 运行时实例
printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l* |
||
scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l* |
||
|
* 虽然源代码用于大多数可用的此实例,它执行内部调用到源代码未提供另一个实例。
某些 C 运行时函数和 C++ 运算符的行为,当调用与应用程序的调试版本不同。 (应用程序调试版本可以完成通过定义 _DEBUG 标记或由链接到 C 运行库的调试版本。) 的说明性能差异通常包含额外的功能或实例提供支持的信息调试进程。 下表列出了这些实例。
在应用程序的调试版本不同的行为的实例
C 中止 实例 |
C++ 删除 运算符 |
C 断言 实例 |
C++ 新 运算符 |
有关使用 C++ 运算符的 " debug " 版本的更多信息上表中,请参见 使用从 C++ 的调试堆。