valgrind - 查找共享库中的内存泄漏

2024-02-23

我需要知道如何找出共享库中的内存泄漏,该库将被加载到发布二进制文件中。我的意思是我使用 -g 选项构建的共享库,但加载共享库的二进制文件不是使用 -g 选项构建的。

我得到的泄漏报告如下。

==739==    at 0x4A05809: malloc (vg_replace_malloc.c:149)
==739==    by 0x84781B1: ???
==739==    by 0x87507F5: ???
==739==    by 0x874CF47: ???
==739==    by 0x874E657: ???
==739==    by 0x874F7C2: ???
==739==    by 0x8779C0C: ???

请让我知道如何从共享库中获取泄漏的堆栈跟踪?


假设泄漏确实来自您的共享库,那么我不认为问题在于主可执行文件中缺乏调试。

您的问题更有可能是可执行文件通过调用卸载共享库dlclose在它完成之前。这意味着当 valgrind 检查泄漏时,库的所有符号信息都消失了,因为库不再加载。

如果您可以重建可执行文件,那么最简单的解决方案可能是暂时停止它调用dlclose以便库保持加载状态直到结束。

如果您不能这样做,请尝试使用LD_PRELOAD保持库加载,如下所示:

LD_PRELOAD="/path/to/library.so" valgrind my-executable

这有望欺骗动态链接器,使其即使在关闭后也能保持库的加载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

valgrind - 查找共享库中的内存泄漏 的相关文章

  • 通过环境变量告诉 ld 在哪里查找目录

    我正在对课程的 C 和 C 文件进行评分 并且此作业使用 GSL 库 由于我的计算机没有 root 权限 因此我的 GSL 库安装在我的主目录中 因此我需要告诉编译器和链接器在哪里可以找到它 当我自己编写程序时 这不是问题 因为我只需向 g
  • OSX 10.9.5 上 libc 中的 wordexp 是否存在泄漏?

    Is wordexp https developer apple com library prerelease mac documentation Darwin Reference ManPages man3 wordexp 3 html
  • bash 是否存在内存泄漏?

    我在跑bashv4 4 19 1 在 Ubuntu 18 10 上发布 如果我跑valgrind在一个简单的脚本上 或者甚至bash version 我发现我确实丢失了 12 个字节的内存 但仍然可以访问大约 46kB 的内存 仍然可访问的
  • 从 64 位应用程序加载 32 位共享库?

    我有一个编译为 32 位的共享库 我可以在 64 位应用程序中使用它吗 还是需要将共享库编译为 64 位 不可以 您无法通过传统方式在 64 位应用程序中加载 32 位库 有一些聪明的技巧 例如使用 32 位应用程序加载库并通过 IPC 接
  • 我的简单 ListView 应用程序正在泄漏内存。我做错了什么?

    首先 我确实先将其发布到 android google 群组 但它经过了审核 我不确定它需要多长时间才能出现在那里 所以希望这里有人可以提供帮助 我创建了一个简单的应用程序 其中 ListView 遵循 ListActivity 我在网上找
  • 是否可以让 valgrind 忽略某些库?

    或者最好是全部而不只是我的代码 我的程序使用 Gtk Loudmouth 和其他一些东西 而这两个 以及它们背后的一些 libgcrypto libssl 本身导致了如此多的错误 以至于我无法检测到我自己的错误 是否有可能让 valgrin
  • Valgrind 自动测试——它们在什么地方使用过吗?

    您认为基于 valgrind 工具套件运行一组自动测试有意义吗 您听说过或看到过这样的设置吗 这样的设置可以执行哪些自动 不受人类直觉影响 操作 如果您在单元测试或最终构建测试中检查内存问题 错误代码 那么这是有意义的 可能有两种方法 编写
  • ActiveMQ 内存消耗通过屋顶(页面文件)...该怎么办?

    我们使用的是旧版本的 ActiveMQ 5 3 2 请参阅 ActiveMQ可靠吗 https stackoverflow com questions 4303610 is activemq reliable 我们取消了持久性 因为我们需要
  • Linux上的轻量级内存泄漏调试

    我首先寻找现有的答案并看到Valgrind是大家最喜欢的 Linux 内存泄漏调试工具 很遗憾Valgrind似乎不适合我的目的 我将尝试解释原因 限制条件 泄漏仅在客户环境中重现 由于某些 法律限制我们必须使用现有的二进制文件 没有重建
  • 通过 bash 调用应用程序时忽略 dyld_insert_libraries

    对于我的应用程序 我使用 DYLD INSERT LIBRARIES 来切换库 我运行的是 Mac OS X El Capitan 如果我在 shell 中设置这些环境变量 export PYTHONHOME HOME anaconda e
  • 从 JVM 线程本地空间卸载 Clojure 变量

    我正在 Clojure 中为 BaseX 编写一个插件 通过 lein uberjar 构建 并包含 Clojure 解释器 在大多数情况下 这效果很好 然而 当通过 BaseX HTTP 实例运行时 评估在 Jetty 的线程池内进行 而
  • 为什么内存泄漏很常见?

    是否是由于程序员对内存如何动态分配和释放的基本误解造成的 是因为自满吗 不 这是因为跟踪每个内存分配需要进行大量的计算 谁负责分配内存 谁负责释放它 确保您使用相同的 API 来分配和释放内存等 确保您捕获每个可能的程序流并在每种情况下进行
  • iPhone应用程序NSNumber内存泄漏

    我遇到了内存泄漏 但我不知道它从哪里来以及如何修复它 在某些时候 我计算两个位置之间的距离 double calc self getDistance location to otherLocation NSNumber distance N
  • 为dlib创建共享库

    按照说明使用 cmake 编译 dlib here http dlib net compile html 生成静态 dlib 库 cd examples mkdir build cd build cmake cmake build conf
  • numpy.ndarray 对象不被垃圾回收

    在尝试微调某些 C C 函数的 Python 绑定中的一些内存泄漏时 我发现了一些与 Numpy 数组的垃圾收集相关的奇怪行为 为了更好地解释这种行为 我创建了几个简化的案例 该代码是使用memory profiler 其输出紧随其后 当涉
  • 1 MB 或更多的 Java 字节数组占用 RAM 的两倍

    在 Windows 10 OpenJDK 11 0 4 x64 上运行以下代码会生成输出used 197 and expected usage 200 这意味着包含 100 万个元素的 200 个字节数组大约占用 200 个字节 200MB
  • 编译器 libstdc++ 版本与系统版本

    我试图了解 g 如何选择它链接的 libstdc 版本 以及当库的 系统 版本不同时它意味着什么 我正在使用 gcc g 4 1 2 根据ABI 指南 http gcc gnu org onlinedocs libstdc manual a
  • 一旦组件被销毁,在 initComponent 函数中创建的存储是否会发生内存泄漏,或者这些存储是否会被垃圾收集?

    这是从另一个问题中衍生出来的一个问题 在 ExtJS 4 中具有相同视图并多次存储的最佳实践 https stackoverflow com questions 27333787 best practice to have the same
  • 内存泄漏?!在“array_map”中使用“create_function”时,垃圾收集器是否正确?

    我在 StackOverflow 上找到了以下解决方案 从对象数组中获取特定对象属性的数组 PHP 从对象数组中提取属性 https stackoverflow com questions 1118994 php extracting a
  • NodeJS 内存增长 - (系统)内存泄漏?

    我在我们的生活环境中遇到了奇怪的内存泄漏 其中 system 堆中的对象不断增长 堆转储 Here is a memory dump where the memory usage grew to 800MB 请注意 该内存保留在Genera

随机推荐

  • 允许对易失性对象进行优化

    From ISO IEC 9899 201x部分5 1 2 3 程序执行段落4 在抽象机中 所有表达式都按以下指定的方式求值 语义 实际的实现不需要评估一部分 表达式 如果它可以推断出它的值没有被使用并且没有 产生所需的副作用 包括任何由以
  • cppcheck 的规则集

    cppcheck允许你创建自己的规则文件 但我不知道cppcheck的功能暴露了多少 是否有人正在开发一套可以强制执行的JSF http www stroustrup com JSF AV rules pdf or MISRA http w
  • 在任务管理器之间均匀分配 Flink 运算符

    我正在 15 台机器的裸机集群上构建 Flink 流应用程序原型 我使用带有 90 个任务槽 15x6 的纱线模式 该应用程序从单个 Kafka 主题读取数据 Kafka主题有15个分区 所以我也将源算子的并行度设置为15 但是 我发现 F
  • 如何知道 MediaRecorder 何时完成将数据写入文件

    在进行实际录制之前 我们使用 MediaRecorder 使用 setOutputFile 将视频录制到外部存储上的文件中 一切正常 但主要问题是 录制完成后 我们希望开始在 VideoView 中播放录制的视频 如何知道文件何时可以读取和
  • CasperJS 无法设置 window.navigator 对象

    尝试使用 CasperJS 抓取网页 网页检查浏览器是否为 IE 6 7 使用 casperjs 传递 userAgent 似乎不满足其条件 UserAgent 通过 Mozilla 4 0 兼容 MSIE 6 0 Windows NT 5
  • Django Admin + FORCE_SCRIPT_NAME + 登录重定向不正确

    我让 Django 在 Nginx 后面运行fastcgi pass 我在子路径上运行 Django 例如 django sample location django sample include fastcgi params fastcg
  • 导入带有外键的 csv

    假设我有 2 个表 学生和团体 Group 表有 2 列 id GroupName Student 表有 3 列 id StudentName 和 GroupID GroupID 是 Group 字段的外键 我需要从 CSV 导入 学生 表
  • 需要来自 MySql 数据库的日期块数组

    好的 我有一个包含 StartDate 和 EndDate 的行的数据库表 我需要做的是从中返回消耗的时间块 例如 如果我有 3 行 如下所示 RowID StartDate EndDate 1 2011 01 01 2011 02 01
  • 自动加载 Word 任务窗格 Office 加载项

    我们正在为内部组织文档开发 Word 任务窗格 Office 加载项 不是 VSTO 在 Word 2013 桌面版 中 当我们插入加载项并保存文档时 当我们重新打开该文档时 加载项会自动加载 在 Word Online 中 此行为有所不同
  • Sklearn KNeighborsRegressor 自定义距离度量

    我正在使用 KNeighborsRegressor 但我想将它与自定义距离函数一起使用 我的训练集是 pandas DataFrame 如下所示 week day hour minute temp humidity 0 1 9 0 1 1
  • ubuntu 中的 php GD 库错误

    我正在使用 ubuntu 11 04 当我打开终端并输入时php a它显示一些像这样的错误 PHP Warning PHP Startup Unable to load dynamic library usr lib php5 200906
  • 在 PHP 的扩展类中使用父变量

    我有两门课 主课和扩展课 我需要在扩展类中使用主变量 我能做谁呢 无效例如
  • 如何以编程方式获取 Android 中应用程序花费的时间

    我想获取我今天使用过的所有应用程序的使用时间 当我通过拨打电话获取这些详细信息时 4636 但我希望在 android 中以编程方式获得这些详细信息 请帮我解决这个问题 我们可以看到这些 Play 商店应用程序如何显示使用情况统计信息 具有
  • 初始化自定义数组类而不创建副本

    我编写了一个自定义数组容器 就像大多数 C 库一样 包括std array and std iterator不适用于目标 嵌入 模板类基本上按预期工作 但是我没有设法设置一个构造函数 它可以初始化整个数组而不创建副本 我尝试了几种构造函数
  • Javafx Webview 的 Ajax 调用失败

    已关注this https stackoverflow com a 16405964 1900006 尽管来自链接的 Ajax 调用执行时没有任何错误 但在 HTML 中使用以下函数仍然会失败 document ready function
  • Spring Boot中如何处理最大文件大小异常?

    我正在使用 Spring Boot v1 2 5 创建 REST 应用程序 上传图像时 我会检查最大文件大小 该属性提供了以下属性 multipart maxFileSize 128KB 在应用程序属性中 该功能由 Spring Boot
  • 如何使用 Java Apache POI 从 Excel 中删除整行?

    我想从 Excel 中删除整行 我努力了removeRow XSSFRow rerow sheet1 getRow 1 sheet1 removeRow rerow and shiftRows int rowIndex 1 int last
  • Javascript 禁用最佳实践? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如果用户禁用了 Javascript 是否有人会优化他们的网页以实现一些友好的行为 在这种情况下是否有任何技巧可以提供一些伪脚
  • EF Add-Migration 指示“没有挂起的显式迁移”,但 Update-Database 抱怨“..有挂起的更改”

    我经常在实体框架代码优先迁移中遇到以下情况 我添加了一些迁移并成功地用它们更新了数据库 当稍后我希望添加新的迁移时 Add Migration 命令抱怨其 无法生成显式迁移 因为以下显式迁移正在挂起 也就是说 它似乎忘记了它之前已经应用了这
  • valgrind - 查找共享库中的内存泄漏

    我需要知道如何找出共享库中的内存泄漏 该库将被加载到发布二进制文件中 我的意思是我使用 g 选项构建的共享库 但加载共享库的二进制文件不是使用 g 选项构建的 我得到的泄漏报告如下 739 at 0x4A05809 malloc vg re