问题标签 [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.
memory - 如何记录程序上的每个内存分配和释放?
我想看看碎片化是增加我的扭曲服务器的内存使用量的原因。我在这里发布了一个问题: 如何找到扭曲服务器内存使用量增加的来源?
现在,我要做的是可视化堆。找到一篇文章:内存碎片。那篇文章中的堆图就像我想要的一样。用matplotlib或者其他工具画出这样的图对我来说并不难。最困难的工作是:如何记录内存分配和释放?
我知道我可以修改 CPython 的源代码,在 omalloc.c 中添加一些日志记录代码并重新编译 Python,然后使用修改后的 CPython 来运行我的服务器。但是,我不想为此浪费时间。然后我正在寻找一些可用的工具。我知道有一个工具valgrind可以用来检测内存泄漏,但我不知道如何记录分配和释放。我看到它的 memcheck 可以检测到类似的东西:
- 无效读取
- 未初始化
- 免费无效
但这不是我想要的,我需要的是:
- 用时间、地址和大小记录内存的每次分配和释放
我的问题是:
- 我怎么能用 valgrind 做到这一点?
- 如果我不能,我应该为此编写一个模块吗?
- 或者有没有更好的工具可以做到这一点?
谢谢。
c - Valgrind 声称有未释放的内存。这很糟糕吗?
Valgrind 为我的代码提供了以下泄漏摘要。但是,我已经释放了所有 malloc 的内存。这是一件坏事,还是正常的?我的程序在c中。
==3513== 泄漏摘要:
==3513== 肯定丢失:0 个块中的 0 个字节。
==3513== 可能丢失:0 个块中的 0 个字节。
==3513== 仍然可达:1 个块中的 568 个字节。
==3513== 抑制:0 个块中的 0 个字节。
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 代码如下:
显示“分析计时器已过期”,这是什么意思?如何解决这个问题呢?谢谢!
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.
c - 未初始化的值是由堆分配创建的
我一直在追逐这个错误,我就是不明白。我是否忘记了一些基本的C或其他东西?
第 96 行打印参数“char *input”就好了(DEBUG_ON==1),但第 105 行吐出了 valgrind 错误(它在控制台中打印得很好)。“char *input”源自获取一行输入的 getline(),在此函数的情况下,将类似于不带引号的“path /test/path”。我可以在前面的函数中很好地打印和操作它。什么是“char *inputCopy”未初始化?有任何想法吗?提前致谢!
linux - 限制在 linux 上调试应用程序的资源使用
我有一个 C/C++ 应用程序,它只在重负载下崩溃。我通常使用 valgrind 和 gprof 来调试内存泄漏和分析问题。失败率大约是百万次运行中的 100 次。这是一致的。我可以从表面上限制可用于在 valgrind 中运行的应用程序的调试构建的资源,而不是复制到我的应用程序的流量吗?
memory-leaks - 向valgrind内部的进程发送信号?
如何向在 valgrind 内部运行的进程发送信号以检查其内存使用状态?
谢谢!
linux - 在 Apache httpd 和模块中搜索内存泄漏
在 Apache httpd 和 httpd 模块中查找内存泄漏的最佳方法是什么?
有什么方法吗?
我尝试了一些 valgrind,但几乎没有出现障碍:
- Valgrind 期望二进制文件正常退出。我已经设法使用 MaxRequestsPerChild 和 -X 参数来做到这一点。
- 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/
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
macos - 如何在 Snow Leopard 上编译 Valgrind?
如何在 Snow Leopard 上编译 Valgrind?