Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467879
  • 博文数量: 148
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1553
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-23 23:09
文章分类

全部博文(148)

文章存档

2010年(6)

2009年(58)

2008年(84)

我的朋友

分类: LINUX

2008-07-14 11:34:13

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显示出函数调用栈 信息以方便我们准确定位错误。


阅读(1386) | 评论(0) | 转发(0) |
0

上一篇:动态连接库

下一篇:debug 使用

给主人留下些什么吧!~~