gpt4 book ai didi

c++ - 如何在valgrind中为进程设置动态链接库路径和环境变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:23 27 4
gpt4 key购买 nike

我需要在运行时为进程设置 LD_LIBRARY_PATH、LD_PRELOAD 和一些环境变量,并使用 Valgrind 检测内存泄漏。

谁能建议一种在 valgrind 中为进程设置或传递这些变量的方法?

最佳答案

我遇到了类似的问题,试图在需要与 valgrind 使用并一直在使用的库不兼容的库的程序上运行 valgrind:

valgrind --trace-children=yes env LD_LIBRARY_PATH=your_library_path OTHER_VAR=foo your_program arg1 arg2...

env设置环境然后execs 你的程序。我们需要通过 --trace-children=yes valgrind 的参数,以便它继续跟踪 exec 系统调用。如果不设置 --trace-children=yes,valgrind 将在 exec 处停止跟踪,您将不会从 valgrind 上获得任何有用的输出你的程序

这种方法的一个潜在缺点是 valgrind 可能会报告 env 中的任何内存问题。我没有从这个源中看到任何误报(env 不是一个非常复杂的程序),但它可能会发生。

虽然我还没有用 LD_PRELOAD 尝试过(它还没有出现在我的用例中)。 Valgrind 确实设置了 LD_PRELOAD,因此您可能必须执行如下操作:

valgrind --trace-children=yes env LD_PRELOAD=$LD_PRELOAD:your_preload your_program

关于c++ - 如何在valgrind中为进程设置动态链接库路径和环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24745120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com