N*********y 发帖数: 105 | 1 Rational Purify,不是free,不過它的license算法有bug,基本可以當free用,呵呵。 |
|
|
|
|
|
p*****o 发帖数: 7 | 6 Depending on which platform you are developing on, there are different
memory profilers that can help you find leaks. On windows you can use
boundschecker, on Linux you can try valgrind. Microsoft also provides some
facilities. Do a search on MSDN if you are on windows platform. One of the
drawbacks is that when you run your programs with these tools, sometimes the
performances are very poor, so they may or may not work for you.
If you don't have access to any of these tools, you can overload ne |
|
k****f 发帖数: 3794 | 7 跟AMD cluster没关系,
你自己程序出问题了。用valgrind查内存问题 |
|
t****t 发帖数: 6806 | 8 use valgrind to check your program for memory corruption. |
|
b**n 发帖数: 289 | 9 Thank you very much, thrust. valgrind helped me find the bug! |
|
c***d 发帖数: 996 | 10 ☆─────────────────────────────────────☆
grasssu (黄底黑花纹的猫) 于 (Wed Nov 8 05:53:12 2006) 提到:
所有的new都delete了,但是内存消耗还是越来越大。程序是一个6次的大循环,每个循
环运行2个算法各3次。基本上所有对象都在循环里定义的。
为什么会这样?堆上的对象(如vector v(10000,0))什么时候destruct呀?还有,stl
的container装载的元素数目有限制吗?
☆─────────────────────────────────────☆
kukutf (五脚蟹★酷酷豆腐) 于 (Wed Nov 8 09:34:01 2006) 提到:
用valgrind检查
stl
☆─────────────────────────────────────☆
uuiiuu (无) 于 (Wed Nov 8 11:22:01 2006) 提到:
~~~~~~~~~~~~~~~~~~~~~~
obviously not.
stl
☆─────────── |
|
c***d 发帖数: 996 | 11 ☆─────────────────────────────────────☆
flyingjeff (1@2) 于 (Sun Sep 3 22:04:21 2006) 提到:
for windows platform.
valgrind不能用吧?
thanks a lot!
☆─────────────────────────────────────☆
flyingjeff (1@2) 于 (Mon Sep 4 00:28:23 2006) 提到:
thanks a lot!
I'll have a try.
不过我才看到,原来VC里有一个profiler,以前没用过,ft
☆─────────────────────────────────────☆
streetstone (streetstone) 于 (Thu Dec 28 05:18:12 2006) 提到:
For Linux: gprof
For Windows: boundchecker |
|
k****f 发帖数: 3794 | 12 valgrind
boundchecker
软件查这些常见内存错误 |
|
|
t****t 发帖数: 6806 | 14 not sure about automatic tracing. and i think the yacc itself doesn't have
the solution. you can use valgrind on the generated program, though.
about yydebug, refer to "info bison", section "Tracing". there's an example
there.
60 |
|
g*****e 发帖数: 87 | 15 valgrind helps a lot also! |
|
s***e 发帖数: 122 | 16 hey, it's really very nice tool, thanks! I am also expecting a valgrind
plugin for eclipse. |
|
t****t 发帖数: 6806 | 17 用valgrind跑跑看, 就是慢了点
server |
|
t****t 发帖数: 6806 | 18 99.999% your problem. definitely NOT C++'s bug.
use valgrind to debug.
有一个奇怪的bug, 在某些
束。我debug的时候发现,在某一
就能顺利执行。
为什么只在某些platform下出为题 |
|
|
t****t 发帖数: 6806 | 20 told you, just use valgrind to run it |
|
t****t 发帖数: 6806 | 21 valgrind solves this easily |
|
r*********r 发帖数: 3195 | 22 优化用了什么trick很难讲,除非看它生成的汇编代码.
btw, 变量没有初始化是常见问题, 用 valgrind 可以查出来的. |
|
t****t 发帖数: 6806 | 23 别的不说, core dump以后用core file调用gdb就比VS强10倍了, VS只能在出错以后立
刻进入debug才行
另外valgrind在windows上根本没有.
设断点慢慢跟踪这种糙活我好久不干了. |
|
s***e 发帖数: 122 | 24 我个人很喜欢eclipse+CDT,现在把valgrind挂到external tools里面去了。可惜速度
慢了点,但是功能多还是补偿了不少。 |
|
c****e 发帖数: 1453 | 25 那么多讨论debugging的帖子都没有提到windbg的.难道大家在windows上debug都是VS?
windows和gdb相比较的是windbg,超级强大. VS完全是另外一个路子的, 虽然code base
开始是一样的. 当然manage code debugger那一套还是VS方便. windbg超多extension,
一点不比gdb弱. tracing还有基于trace的checker windows也有很多方案, 不比
valgrind差, 不光是memory leak, registry, file, concurrency都可以check. |
|
T*****9 发帖数: 2484 | 26 我只会用 valgrind测试memory check...
都不知道有啥别的用
对了,你做硬件,怎么用C++不用C呢?
VS |
|
t****t 发帖数: 6806 | 27 memory check当然是最基本的, 包括非法内存操作(能告诉你哪块内存向前或向后多少
位置), 依赖未初始化值的转移或输出, 内存未释放或内存泄漏
cachegrind, 指出哪里cache miss最多以便优化
helgrind, 找出多线程操作可能的data race
我现在程序写完, 必然拿valgrind对小数据运行一遍
唯一的缺点就是太慢太慢了, 不过全世界所有的模拟器都慢 |
|
c****e 发帖数: 1453 | 28 10-15X的慢大部分程序还是可以忍的,呵呵。Valgrind的JIT可能还不够优化,所以觉
得特别慢。 |
|
T*****9 发帖数: 2484 | 29 这个是valgrind 不是core dump。。。
const
>
std:
std:
so
const
>
std:
std:
so
const
多少 |
|
r*********r 发帖数: 3195 | 30 都一样. 我用 mac os x 都可以用 core dump, 不过文件格式不一样.
valgrind 也 port 到苹果上了.
unix 的很多东西现在好像失传了... 变成了 black magic. |
|
g*********s 发帖数: 1782 | 31 怎么感觉是鸡肋啊。速度太慢。大一点的测试例子就跑不动了。 |
|
c****e 发帖数: 1453 | 32 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. |
|
g*********s 发帖数: 1782 | 33 在调一个memory corruption的bug。purify/valgrind都没帮上忙,只好一点点跟踪。
目前怀疑的一个方向是动态分配的小型对象(8个字节以下)太多。如果是这种情况,
memory pool的正确处理方法是什么?
如果是保持chunk里特定长度的对象数目不变,那么即使还有很多内存可用,也会出现
out-of-memory问题。
如果允许split其他chunk,那么回收时造成很多碎片,还是会有问题。
研究memory pool的高手指点一下吧。 |
|
|
H******M 发帖数: 133 | 35 我刚用valgrind(with default parameters)运行了-O0编译的结果。
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 13 from1)
似乎没有错误阿。但是有很多memory leak,因为我打算最后来处理memory leak. 这个
suppressed 13 from 1 有问题吗? |
|
H******M 发帖数: 133 | 36 我刚用valgrind(with default parameters)运行了-O0编译的结果。
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 13 from1)
似乎没有错误阿。但是有很多memory leak,因为我打算最后来处理memory leak. 这个
suppressed 13 from 1 有问题吗? |
|
H******M 发帖数: 133 | 37 我刚用valgrind(with default parameters)运行了-O0编译的结果。
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 13 from1)
似乎没有错误阿。但是有很多memory leak,因为我打算最后来处理memory leak. 这个
suppressed 13 from 1 有问题吗? |
|
H******M 发帖数: 133 | 38 valgrind(with default parameters)运行-O3的结果还是:
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 13 from 1)
这个"conditional jump on uninitialized value"要怎么查呢? |
|
H******M 发帖数: 133 | 39 谢谢大家.现在找到问题了,是array的边界超出了.很奇怪为什么valgrind没有提示. |
|
m*****e 发帖数: 4193 | 40 valgrind is not source level. It has no way of knowing your array is out of
bound. It could only know dynamically allocated memory. |
|
t****t 发帖数: 6806 | 41 valgrind只检测动态分配(在堆上)的内存越界. 静态和栈上的检测不了. |
|
r*********r 发帖数: 3195 | 42 用 valgrind 扫一遍, memory leak 很容易找.
要提一下性能的话, callgrind + kcachegrind, 顶级的 profiler. |
|
g****y 发帖数: 436 | 43 不care通用性的话,VS最好。
想不花钱的话,Eclipse CDT + MINGW或者cygwin爽。
想不劳而获找bug,virtualbox+ubuntu+valgrind爽。
a |
|
d****p 发帖数: 685 | 44 There is virtually no diff in coding itself though you may have to write
more strict c++ code when under unix since visual studio's language
extension really hides a lot of "faulty" code.
What you may need to get familiar with is a set of tools: gmake, gdb, dbx, g
++, vi, shell, valgrind, etc.
Suggest you pick a old version of Sun CC to force you to write solid code. |
|
t****t 发帖数: 6806 | 45 i guess you have memory problem if you are using c/c++...
if so, you can try running valgrind for your small model. it can find out
some hidden problem (such as runaway pointer or using uninitialized values)
even if your normal run is ok. |
|
r****t 发帖数: 10904 | 46 我也遇到类似情况,尺寸小的 video 文件做输入运行就完全正常,尺寸大点的就
crash 了,或者是 malloc assertion error, 或者是月realloc error, double free 什么的每次运行还不一样。 靠 log 把问题缩小到一个 api call 上面,comment 掉就没问
题了,或者手动在此只处理一个 frame 的一部分,只要总尺寸还比较小也没有问
题。 之后就不知道该怎么办了。valgrind 也没发现啥明显的。
现在 feature set 还不全,都是 plugin 结构的,我估计几天以后完成另外一个
plugin 以后要回头来 debug 这个, 痛苦。
static
to |
|
t*******t 发帖数: 105 | 47 另外一个问题是,valgrind报错:
address 0XXXXXXXX is not allocated, stacked,or (recently) freed。
这种错误如何去找到root cause呢? |
|
|
j****i 发帖数: 305 | 49 Used valgrind several times before, my impression is that it is very slow.
Just came across this technique, and want to try it out. |
|
s*w 发帖数: 729 | 50 1. 就是问你是否熟悉常用的 memory error detection tools, 比如 valgrind; 如果
你没
编过大点的程序,显然没用过
2. 不会,貌似出错范围太大了;小程序自然是 step through line by line, 如果
都 load
不进去,大约是没内存空间放 code binary 或者 需要的 global variable 了;似乎
和 stack
没关系
and
program
is |
|