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

查找内存访问问题和内存泄漏

运行时检查由两部分组成: 内存访问检查及内存使用和泄露检查。访问检查将检查被调试应用程序是否不当使用了内存。内存使用和泄露检查包括跟踪所有仍存在的堆空间,然后在需要时或程序终止时,扫描可用数据空间以及识别无引用的空间。

可以使用 check 命令启用内存访问检查及内存使用和泄露检查。要仅启用内存访问检查,请键入:


(dbx) check -access

要启用内存使用和内存泄漏检查,请键入:


(dbx) check -memuse

启用所需的运行时检查类型后,运行程序。程序正常运行,但速度很慢,因为每次进行内存访问前都要检查其有效性。如果 dbx 检测到无效访问,便会显示错误的类型和位置。此时,可以使用 dbx 命令(如 where 命令)获取当前栈跟踪,也可以使用 print 命令检查变量。


注 –

不能对使用 Java 代码和 C JNI 代码或 C++ JNI 代码混编的应用程序使用运行时检查。


有关使用运行时检查的详细信息,请参见第 9 章