问题标签 [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 投票
24 回答
66891 浏览

c++ - 您使用什么工具在 Linux 上开发 C++ 应用程序?

我在 Linux 环境中开发 C++ 应用程序。我每天使用的工具包括带有 CDT 插件的 Eclipse、gdb 和 valgrind。
其他人使用什么工具?Linux 是否有任何东西可以与 Microsoft Visual Studio 的流畅性相媲美?

0 投票
1 回答
416 浏览

python - 如何检查 Guile 扩展模块中的内存泄漏?

我为 Guile 开发了一个扩展模块,用 C 编写。这个扩展模块嵌入了一个 Python 解释器。

由于此扩展模块调用 Python 解释器,我需要验证它是否正确管理 Python 对象占用的内存。

我发现 Python 解释器在其自己的内存处理中表现良好,因此通过运行 valgrind,如果没有其他干扰因素,我可以发现由于我自己的 Python 解释器嵌入代码中的错误导致的内存泄漏。

但是,当我在 valgrind 下运行 Guile 时,valgrind 报告内存泄漏。由于我自己的代码,此类内存泄漏掩盖了任何内存泄漏。

问题是我可以做些什么来将由于我的代码中的错误导致的内存泄漏与 valgrind 报告的由于 Guile 引起的内存泄漏分开。另一个工具而不是 valgrind?特殊的 valgrind 选项?放弃并依赖手动代码演练?

0 投票
2 回答
1567 浏览

eclipse - 在 Valgrind 下运行 Eclipse

这里有人在Valgrind下成功运行 Eclipse吗?我正在与涉及 JNI 代码的特别毛茸茸的崩溃作斗争,并希望 Valgrind 可能(再次)证明它的卓越性,但是当我在 Valgrind 下运行 Eclipse 时,JVM 以无法创建初始对象的错误消息终止堆(我目前无法访问确切的错误消息;我会尽快编辑这篇文章。)

0 投票
4 回答
2803 浏览

c++ - 每当调用 malloc/free 时输出到 stderr

使用 Linux/GCC/C++,我想在调用 malloc/free/new/delete 时向 stderr 记录一些内容。我正在尝试了解库的内存分配,因此我想在运行单元测试时生成此输出。我使用 valgrind 进行内存泄漏检测,但我找不到一个选项来让它只是日志分配。

有任何想法吗?我正在寻找最简单的解决方案。重新编译库不是一种选择。

0 投票
1 回答
23061 浏览

c++ - 如何告诉 valgrind 对分叉进程进行 memcheck?

我有一个过程x,我想用valgrind. 问题是x由 运行y,而y反过来又由 运行z。我无法x独立运行,因为yz设置了环境x,例如环境变量、命令行开关、所需的文件x等。

  1. 有什么方法可以告诉我valgrind继续运行,z但要遵循它找到的任何分叉并报告它们?
  2. 有什么方法可以告诉我valgrind遵循任何分叉,但只报告名为的进程x
  3. 有什么方法可以告诉我valgrind附加到已经运行的进程,就像我可以用 gdb 做的那样?

我不知道这是否重要,但我在 SuSE64 linux 和 valgrind-2.4.0 下运行。

谢谢!

0 投票
1 回答
855 浏览

valgrind - 如何检测是否在 make 文件或 shell 脚本中运行在 valgrind 下?

我需要检测我的 Makefile 是否在 valgrind 下运行(间接地,使用 valgrind --trace-children=yes),我知道如何从 C 中执行此操作,但我还没有找到从脚本中执行此操作的方法,

较早的答案仅适用于 Linux。对于 Mac OS XI,除非有人有更好的主意,否则我会在环境中使用 grep 查找 VALGRIND_STARTUP_PWD。

0 投票
6 回答
1978 浏览

c - 如何学习 C 调试和最佳实践

我用 C 编写了一个 Apache 模块。在某些条件下,我可以让它出现段错误,但我不知道为什么。此时,可能是我的代码,可能是我编译程序的方式,也可能是操作系统库中的错误(段错误发生在调用 dlopen() 期间)。

我尝试过运行 GDB 和 Valgrind,但没有成功。GDB 让我回溯到看起来毫无意义的 dlopen() 系统调用。在 Valgrind 中,该错误实际上似乎消失了,或者至少变得不可重现。另一方面,当谈到这些工具时,我完全是个新手。

我对生产质量的 C 编程有点陌生(我多年前开始使用 C,但从未专业地使用它。)对我来说学习调试程序的最佳方法是什么?我还应该研究哪些其他工具?总之,您如何弄清楚如何应对新的错误挑战?

编辑:澄清一下,我要感谢 Sydius 和 dmckee 的意见。我看过 Apache 的指南,并且对 dlopen(以及 dlsym 和 dlclose)相当熟悉。我的模块大部分都可以工作(它大约有 3k 行代码,只要我不激活这一部分,一切似乎就可以正常工作。)

我想这就是我最初的问题的来源——我不知道下一步该做什么。我知道我没有充分利用 GDB 和 Valgrind。我知道我可能没有使用完全正确的标志进行编译。但我很难弄清楚更多。我可以找到告诉我已经知道的内容的初学者指南,以及告诉我比我需要知道的更多但没有指导的手册页。

0 投票
3 回答
4926 浏览

c++ - 如何检测程序是否从 valgrind 中运行?

有没有办法在运行时识别从 valgrind 中运行的可执行文件?我有一组 C++ 单元测试,其中一个预计std::vector::reserve会抛出std::bad_alloc. 当我在 valgrind 下运行它时,它完全退出,阻止我测试内存泄漏(使用 valgrind)和行为(期望抛出异常)。

这是一个重现它的最小示例:

运行 valgrind,我得到以下输出:

我想修改我的单元测试,以便在从 valgrind 中运行时跳过有问题的代码。这可能吗?

0 投票
38 回答
361925 浏览

c - 有没有很好的 Valgrind 替代 Windows?

当我发现 Valgrind 仅适用于 Linux 时,我正在研究 Valgrind 以帮助改进我的 C 编码/调试——我没有其他需要或兴趣将我的操作系统迁移到 Linux,所以我想知道是否有适用于 Windows 的同样好的程序。

0 投票
3 回答
3374 浏览

java - 在 Valgrind 下的 Sun VM 中运行 JNI 应用程序

sun JVM 在 valgrind 下运行时会发出很多额外的噪音,这使得跟踪应用程序中的内存问题非常具有挑战性。

我想找到一个抑制文件或 VM 运行时模式,它可以去除虚假的内存错误,以便在这种情况下将小麦与谷壳分开。有什么建议么?