在Solaris上找到错误的内存访问

时间:2009-12-10 14:29:16

标签: memory-management solaris valgrind

在Linux,FreeBSD和其他系统上我有valgrind用于检查内存错误,如无效读取和类似操作。我真的很喜欢valgrind。现在我必须在Solaris / OpenSolaris上测试代码,并且无法找到一种方法来获取有关无效读/写的信息,并以与valgrind相同的方式(或更好;-))。

在网上搜索时,我找到libumem的引用,但我只得到有关内存泄漏的报告,而不是无效访问。我错过了什么?

3 个答案:

答案 0 :(得分:6)

Sun Studio编译器附带的dbx在其“运行时检查”功能(check子命令)中包含内存访问检查支持。参见:

相关的“Sun Memory Error Discovery Tool”也可以从 http://cooltools.sunsource.net/discover/

答案 1 :(得分:1)

watchmalloc是一个非常有用的库,可以为您的程序动态加载(通常不需要重新编译),然后在所有通常有问题的内存位置(如释放区域或在分配的内存块之后)设置观察点。 如果您的程序访问其中一个无效区域,它会收到一个信号,您可以在调试器中检查它。

根据配置的不同,可以仅监视有问题的区域,也可以监视读取区域。

答案 2 :(得分:1)

从版本3.11.0开始,Valgrind确实在Solaris上运行。 请参阅Release NotesSupported Platforms

更确切地说,现在支持 x86 / Solaris amd64 / Solaris 。 对 sparc / Solaris 的支持仍在使用中。