由于运行时检查是一种综合的调试功能,因此可在使用运行时检查功能时(使用收集器收集性能数据的情况除外)执行所有调试操作。
运行时检查:
检测内存访问错误
检测内存泄漏
收集内存使用情况数据
适用于所有语言环境
适用于多线程代码
无需重新编译、重新链接或进行 makefile 更改
如果编译时使用 -g 标志,则在运行时检查错误消息中提供源代码行号关联。运行时检查还可以检查使用优化 -O 标志编译的程序。对于未使用 -g 选项编译的程序,有一些特殊注意事项。
可以通过 check 命令使用运行时检查功能。
一种避免同时出现大量错误的方法是在开发周期中尽早(在开发程序的各个组成模块阶段)使用运行时检查。先编写一个单元测试来驱动每个模块,然后使用运行时检查以递增方式逐个检查模块。这样每次需要处理的错误数就会较少。将所有模块集成为完整的程序时,遇到的新错误可能会很少。将错误数减少为零后,就只有在对模块进行了更改时,才需要再次使用运行时检查。
要使用运行时检查必须满足下列要求:
与 libc 动态链接。
使用标准 libc malloc、free 和 realloc 函数或基于这些函数的分配器。运行时检查提供了一个应用编程接口 (application programming interface, API) 来处理其他分配器。请参见运行时检查应用编程接口。
可接受未完全剥离的程序和使用 strip -x 剥离的程序。
有关运行时检查限制的信息,请参见运行时检查限制。