1。http://blog.chinaunix.net/u1/52321/showart_487940.html有关安装方面的问题。
2。 官方文档
3。http://www-128.ibm.com/developerworks/cn/linux/l-pow-debug/ ibm介绍详细文档
4。http://blog.chinaunix.net/u1/56834/showart_512447.html 很详细
各种错误信息介绍:
1。
用Valgrind查找无效指针使用
用memcheck工具,Valgrind也可以找出无效堆内存使用。比如,如果你用malloc或new分配了一个数组,并访问数组末端后面的内存:
char *x = malloc(10);
x[10] = ´a´;
Valgrind可以检测出这个错误。用Valgrind运行下面的示例程序:example2
#include
int main()
{
char *x = malloc(10);
x[10] = ´a´;
return 0;
}
%valgrind --tool=memcheck --leak-check=yes example2
其结果是(片断)
==9814== Invalid write of size 1
==9814== at 0x804841E: main (tst.c:6)
==9814== Address 0x1BA3607A is 0 bytes after a block of size 10 alloc´d
==9814== at 0x1B900DD0: malloc (vg_replace_malloc.c:131)
==9814== by 0x804840F: main (example2.c:5)
这
个信息表明我们分配了10字节的内存,但是访问了超出范围的内存,因此,我们就进行了一个´非法写´操作。如果试图从那块内存读取数据,我们就会得到
´Invalid read of size
X´的警告(X是试图读取数据的大小,char是一个字节,而int根据系统的不同可能是2个字节或4个字节)。通常,Valgrind显示出函数调用栈
信息以方便我们准确定位错误。
阅读(1413) | 评论(0) | 转发(0) |