Oracle Solaris Studio 12.2:使用 dbx 调试程序

运行时检查应用编程接口

泄漏检测和访问检查都要求使用共享库 libc.so 中的标准堆管理例程,这样,运行时检查便可跟踪程序中所有内存分配和释放情况。许多应用程序中都有在 malloc()free() 函数的基础上或独立编写而成的自己的内存管理例程。如果您使用自己的分配器(称为专用分配器),运行时检查便无法自动跟踪它们,这样您就无从知晓由于不当使用它们而导致的泄漏和内存访问错误。

不过,运行时检查提供了一个 API 以便使用专用分配器。使用此 API 可将专用分配器视为标准堆分配器。该 API 本身在头文件 rtc_api.h 中提供,并作为 Oracle Solaris Studio 软件的一部分进行分发。手册页 rtc_api(3x) 详细介绍了运行时检查 API 入口点。

专用分配器不使用程序堆时,运行时检查访问错误报告可能会存在一些细小差别。发生有关标准堆块的内存访问错误时,错误报告通常包括堆块分配的位置。专用分配器不使用程序堆时,错误报告可能不包括分配项。

不需要使用运行时检查 API 来跟踪 libumem 中的内存分配器。运行时检查会插入 libumem 堆管理例程并将这些例程重定向至相应的 libc 函数。