9

对于我正在尝试为我一直在研究的一个类编写代码的方法,我正在尝试从文件中读取双精度值,并使用这些数值在程序内部动态设置一些数组。

我想检查,至少到我来的时候,我是否有内存泄漏。然而,启动valgrind只是挂起,valgrind似乎工作相当繁重,因为 cpu 负载很高,但即使我现在已经等待了一段时间,也没有生成输出。我翻阅了手册的页面,但找不到有用的东西。我编译了 valgrind-3.8.0 并现在使用它。我以我一直以来的方式发射它

valgrind --leak-check=yes --log-file=valgrind_log ./binary_to_execute args_if_any

我也找不到对谷歌搜索这个悬挂问题有用的东西。关于这种悬挂行为的原因有什么想法吗?

编辑 1:这是应用程序的 time 命令的计时输出

47740

real    0m1.299s
user    0m1.116s
sys     0m0.176s

编辑2:这是一个与我遇到的问题或多或少相同的链接,

有类似问题的消息

编辑3:我注意到有趣的事情,如果我要读取的文件大小很大,就会出现这个问题,如果文件的大小相对较小,就不会出现这种挂起,这对我来说也很奇怪。

4

2 回答 2

7

大文件表明有更多工作要做。所以 valgrind 需要更多的时间。Valgrind 真的慢。

您可以使用世界上最好的调试器轻松调试它:printf()(只是半开玩笑。)只需在主循环的每次迭代之前或之后打印一些东西。如果它没有出现,valgrind 真的挂在某个地方。您的 printf() 语句的周到放置应该显示它挂起的确切位置(如果它实际上是挂起而不是缓慢的话。)

于 2012-08-29T22:32:34.770 回答
-1
  1. 也许你的程序主线程没有退出
  2. 等待 valgrind 退出
于 2012-08-18T14:12:54.520 回答