问题标签 [valgrind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
391 浏览

memory - 如何记录程序上的每个内存分配和释放?

我想看看碎片化是增加我的扭曲服务器的内存使用量的原因。我在这里发布了一个问题: 如何找到扭曲服务器内存使用量增加的来源?

现在,我要做的是可视化堆。找到一篇文章:内存碎片。那篇文章中的堆图就像我想要的一样。用matplotlib或者其他工具画出这样的图对我来说并不难。最困难的工作是:如何记录内存分配和释放?

我知道我可以修改 CPython 的源代码,在 omalloc.c 中添加一些日志记录代码并重新编译 Python,然后使用修改后的 CPython 来运行我的服务器。但是,我不想为此浪费时间。然后我正在寻找一些可用的工具。我知道有一个工具valgrind可以用来检测内存泄漏,但我不知道如何记录分配和释放。我看到它的 memcheck 可以检测到类似的东西:

  • 无效读取
  • 未初始化
  • 免费无效

但这不是我想要的,我需要的是:

  • 用时间、地址和大小记录内存的每次分配和释放

我的问题是:

  1. 我怎么能用 valgrind 做到这一点?
  2. 如果我不能,我应该为此编写一个模块吗?
  3. 或者有没有更好的工具可以做到这一点?

谢谢。

0 投票
7 回答
3498 浏览

c - Valgrind 声称有未释放的内存。这很糟糕吗?

Valgrind 为我的代码提供了以下泄漏摘要。但是,我已经释放了所有 malloc 的内存。这是一件坏事,还是正常的?我的程序在c中。

==3513== 泄漏摘要:

==3513== 肯定丢失:0 个块中的 0 个字节。

==3513== 可能丢失:0 个块中的 0 个字节。

==3513== 仍然可达:1 个块中的 568 个字节。

==3513== 抑制:0 个块中的 0 个字节。

0 投票
3 回答
8257 浏览

valgrind - valgrind,分析计时器已过期?

我尝试使用 valgrind 分析一个简单的 c prog:

[zsun@nel6005001 ~]$ valgrind --tool=memcheck ./fl.out
==2238== Memcheck,内存错误检测器
==2238== 版权所有 (C) 2002-2009 和 GNU GPL'd,由 Julian西沃德等人。
==2238== 使用 Valgrind-3.5.0 和 LibVEX;使用 -h 重新运行版权信息
==2238== 命令:./fl.out
==2238==
==2238==
==2238== HEAP 摘要:
==2238== 退出时使用:1,168 字节1 个块
==2238== 总堆使用量:1 个分配,0 个释放,分配 1,168 个字节
==2238==
==2238== 泄漏摘要:
==2238== 肯定丢失:0 个块中的 0 个字节
==2238= = 间接丢失:0 个块中的 0 个字节
==2238== 可能丢失:0 个块中的 0 个字节
==2238== 仍然可以访问:1 个块中的 1,168 个字节
==2238== 抑制:0 个块中的 0 个字节
==2238== 使用 --leak-check=full 重新运行以查看泄漏内存的详细信息
==2238==
==2238== 对于检测到和抑制的错误计数,重新运行:-v
==2238== 错误摘要:0 个上下文中的 0 个错误(抑制:8 个中的 12 个)
分析计时器已过期

我试图分析的 c 代码如下:

显示“分析计时器已过期”,这是什么意思?如何解决这个问题呢?谢谢!

0 投票
3 回答
1369 浏览

c++ - Unexpected Memory Leak [Valgrind]

Today I was just trying to check how valgrind works. So I created a simple program.

The output was as expected. I expected no memory leak. I compiled the file leak.C and generated an executable leak. But when I entered the following command valgrind --leak-check=yes --verbose ./leak, I was surprised. The code had a memory leak. :-o

This is what I got.

How is the code leaking memory?

EDIT : Matter Resolved.

0 投票
3 回答
14507 浏览

c - 未初始化的值是由堆分配创建的

我一直在追逐这个错误,我就是不明白。我是否忘记了一些基本的C或其他东西?

第 96 行打印参数“char *input”就好了(DEBUG_ON==1),但第 105 行吐出了 valgrind 错误(它在控制台中打印得很好)。“char *input”源自获取一行输入的 getline(),在此函数的情况下,将类似于不带引号的“path /test/path”。我可以在前面的函数中很好地打印和操作它。什么是“char *inputCopy”未初始化?有任何想法吗?提前致谢!

0 投票
3 回答
149 浏览

linux - 限制在 linux 上调试应用程序的资源使用

我有一个 C/C++ 应用程序,它只在重负载下崩溃。我通常使用 valgrind 和 gprof 来调试内存泄漏和分析问题。失败率大约是百万次运行中的 100 次。这是一致的。我可以从表面上限制可用于在 valgrind 中运行的应用程序的调试构建的资源,而不是复制到我的应用程序的流量吗?

0 投票
2 回答
5477 浏览

memory-leaks - 向valgrind内部的进程发送信号?

如何向在 valgrind 内部运行的进程发送信号以检查其内存使用状态?

谢谢!

0 投票
3 回答
3345 浏览

linux - 在 Apache httpd 和模块中搜索内存泄漏

在 Apache httpd 和 httpd 模块中查找内存泄漏的最佳方法是什么?

有什么方法吗?

我尝试了一些 valgrind,但几乎没有出现障碍:

  1. Valgrind 期望二进制文件正常退出。我已经设法使用 MaxRequestsPerChild 和 -X 参数来做到这一点。
  2. Valgrind 报告了很多东西,可能与 apr 池有关,但没有任何用处。

操作系统:Linux

PS:

Valgrind 命令:$ valgrind --leak-check=full --leak-resolution=med --log-file=/tmp/valgrind.log ./bin/httpd -X

Valgrind 输出示例: http: //paste-it.net/public/x5b6e8b/

0 投票
1 回答
1976 浏览

php - 使用 Valgrind 调试 PHP 内存损坏

我遇到了似乎是 PHP 的内存损坏问题。我有一个大型代码库,我正在移植到 5.3 运行时。我收到段错误和“zend_mm_heap 损坏”错误,但这些点的回溯没有用。回溯总是返回到各种核心 PHP 函数,例如变量赋值或连接。

据我所知,PHP 的内存在段错误/堆损坏错误发生之前的某个时间点已经损坏。

我已经按照 bugs.php.net/bugs-getting-valgrind-log.php 上的说明进行操作,并生成了一个相当大的 valgrind 日志。它充满了许多错误,例如“条件跳转或移动取决于未初始化的值”。因为该 valgrind 日志中有太多信息,所以我不确定什么是真正的缺陷以及什么是正常行为。

这是 valgrind 输出的一部分:http: //pastie.org/private/exngtften3jeppqyjn4hw

0 投票
7 回答
6679 浏览

macos - 如何在 Snow Leopard 上编译 Valgrind?

如何在 Snow Leopard 上编译 Valgrind?