由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - purify和valgrind的比较
相关主题
菜鸟请教C问题什么是OS Memory management and heap structure?
malloc返回的地址指向了正在被其它变量使用的内存"brk()" 和 mmap() 有什么区别? (转载)
C 语言,初学者问题(3)超牛的debug
C++动态内存碎片问题ask for help about AMD cluster
VC++ 中的 memory leak problema question about memory.
关于C++中 extern "C"的问题。程序中的各个变量/数组的内存地址是否会混在一起?
array allocation in cValgrind报uninitialized value was created by a heap allocat (转载)
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)c里面有什么函数可以
相关话题的讨论汇总
话题: valgrind话题: purify话题: 10话题: long话题: include
进入Programming版参与讨论
1 (共1页)
g*********s
发帖数: 1782
1
试了一下purify和valgrind,下面的code报告结果相同,都是两个越界读,两个越界写
,一个申请未释放。那purify的优势在哪里啊?license挺贵的。
另外那个comment掉的巨型静态数组两个都不报。有什么工具能处理这种情况吗?
trace一个memory crash的bug,搞不定啊。这个crash是在系统的new[]里,看上去是内
存分配表被搞乱了。
#include
#include
#include
int main()
{
long *x = (long*)malloc(10);
x[10] = 100; // invalid write.
long y = x[10]; // invalid read.
long z[10];
long w(10);
z[10] = 100; //static array allocated in stack. no boundary check.
y = z[10]; //no boundary check.
t****t
发帖数: 6806
2
http://valgrind.org/gallery/survey_03/q4.html

【在 g*********s 的大作中提到】
: 试了一下purify和valgrind,下面的code报告结果相同,都是两个越界读,两个越界写
: ,一个申请未释放。那purify的优势在哪里啊?license挺贵的。
: 另外那个comment掉的巨型静态数组两个都不报。有什么工具能处理这种情况吗?
: trace一个memory crash的bug,搞不定啊。这个crash是在系统的new[]里,看上去是内
: 存分配表被搞乱了。
: #include
: #include
: #include
: int main()
: {

o**o
发帖数: 3964
3
我也发现valgrind不能发现栈溢出的问题。

【在 g*********s 的大作中提到】
: 试了一下purify和valgrind,下面的code报告结果相同,都是两个越界读,两个越界写
: ,一个申请未释放。那purify的优势在哪里啊?license挺贵的。
: 另外那个comment掉的巨型静态数组两个都不报。有什么工具能处理这种情况吗?
: trace一个memory crash的bug,搞不定啊。这个crash是在系统的new[]里,看上去是内
: 存分配表被搞乱了。
: #include
: #include
: #include
: int main()
: {

t****t
发帖数: 6806
4
很正常, valgrind的机制是simulate 指令, 并且替换malloc/free一类的调用
栈上的不是用malloc分配的, 所以它弄不清楚
换句话说比如
int a[64];
int b;
假设分配时b在a 后面
那CPU要访问a[64]和访问b, 产生的指令是一模一样的, valgrind当然不知道, 因为它
不管源代码

【在 o**o 的大作中提到】
: 我也发现valgrind不能发现栈溢出的问题。
c****e
发帖数: 1453
5
These are run-time program analysis tools. The biggest concern is the
coverage. Static analysis at source code level gives you better coverage.
They are complement to each other.
Memory leakage checker is relatively easy to build. We have very good in-
house tools on this, and it's really easy to use. Race-condition checker is
harder though.
1 (共1页)
进入Programming版参与讨论
相关主题
c里面有什么函数可以VC++ 中的 memory leak problem
为啥指针读出的数值十分巨大或者十分小?关于C++中 extern "C"的问题。
有什么工具可以检查内存泄漏么array allocation in c
Windows下面有没有类似Valgrind的免费内存工具?在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)
菜鸟请教C问题什么是OS Memory management and heap structure?
malloc返回的地址指向了正在被其它变量使用的内存"brk()" 和 mmap() 有什么区别? (转载)
C 语言,初学者问题(3)超牛的debug
C++动态内存碎片问题ask for help about AMD cluster
相关话题的讨论汇总
话题: valgrind话题: purify话题: 10话题: long话题: include