在 Linux、FreeBSD 和其他系统上,我使用 valgrind 来检查内存错误,例如无效读取等。我真的很喜欢 valgrind。现在我必须在 Solaris/OpenSolaris 上测试代码,并且无法找到一种方法来以与 valgrind 一样好的方式(或更好的 ;-))获取有关无效读/写的信息。
在网上搜索时,我找到了对libumem的引用,但我只得到关于那里内存泄漏的报告,而不是无效访问。我错过了什么?
在 Linux、FreeBSD 和其他系统上,我使用 valgrind 来检查内存错误,例如无效读取等。我真的很喜欢 valgrind。现在我必须在 Solaris/OpenSolaris 上测试代码,并且无法找到一种方法来以与 valgrind 一样好的方式(或更好的 ;-))获取有关无效读/写的信息。
在网上搜索时,我找到了对libumem的引用,但我只得到关于那里内存泄漏的报告,而不是无效访问。我错过了什么?
Sun Studio 编译器附带的 dbx 在其“运行时检查”功能(check
子命令)中包含内存访问检查支持。看:
相关的“Sun Memory Error Discovery Tool”也可从 http://cooltools.sunsource.net/discover/ 获得
watchmalloc是一个非常有用的库,可以为您的程序动态加载(通常不需要重新编译),然后在所有通常有问题的内存位置设置观察点,例如释放区域或分配的内存块之后。如果您的程序访问这些无效区域之一,它会收到一个信号,您可以在调试器中检查它。
根据配置,有问题的区域可以只观察写入,也可以观察读取。