【问题标题】:Good memory leak tool for C++ in a ARMv5tejlARMv5tejl 中用于 C++ 的良好内存泄漏工具
【发布时间】:2012-10-28 23:58:24
【问题描述】:

我一直试图了解我的应用程序中的任何内存泄漏,该应用程序在带有 armv5 的 Freescale MX28 板上运行。

我尝试探索 valgrind,但得知它不支持 armv5 而不是 armv7。

我正在寻找任何可以继续使用的好工具。

【问题讨论】:

  • 这是否意味着无法构建源以在另一个目标架构上执行? (例如 x86)
  • 我曾经在嵌入式 linux 系统上遇到过同样的问题(你在目标上使用 linux 吗??)。我根本无法在目标上编译和运行 valgrind。您的代码是可移植的(或有问题的部分)以使其在基于 x86 的 linux 系统上运行和测试,或者您必须依赖@Brendan Shanks 回答中提到的工具之一。
  • @Brain,是的,它已经构建并且只能在我的目标中执行,即 armv5 和飞思卡尔 MX28 板。
  • @g-makulik 是的,我无法在目标设备中运行 valgrin。我可以构建 iwth ARM 拱门,但是当我将它移到我的目标时,当我运行 valgrind 时说非法操作。有点锁在这里...
  • @linuxdeveloper 所以你可以试试Brendan Shanks'的建议。我认为尝试为您的目标系统正确构建 valgrind 将比它的价值要困难得多。无论如何,您仍然可以选择尝试在可以正确运行 valgrind 的 linux 系统上编译要测试的代码(如果您有真正的硬件依赖项,您可能会尝试在测试环境中模拟驱动程序)。

标签: c++ linux arm


【解决方案1】:

如果可以将输出从您的系统发送到网络,那么您可以编译并链接到您的代码的 C/C++ 库,它可以让您基于 Web 浏览器运行时查看内存的使用情况系统。例如当前使用的总内存、内存是否被损坏、双重删除、不匹配的 new[]/delete、泄漏等。

您的系统是否有可用的以太网/tcp/ip/socket 堆栈或 RS232 串行端口,可以将输出发送到这些端口?如果你有串口,有可以做RS232TCP/IP的小工具 双向通信。您还可以使用带有串行端口的 linux 机器和一些在以太网和 RS232 之间代理的软件。

如果您有兴趣在 linux/bsd/mac/windows 机器上看到这项工作,请在您的嵌入式系统上试用之前告诉我。包含具有典型内存错误的示例 C++ 错误代码,因此本质上它是“解压缩”文件,执行“制作”并在桌面/智能手机浏览器中观看操作。您的飞思卡尔 MX28 开发板运行什么操作系统?

【讨论】:

  • 我会对您的解决方案感兴趣。我在哪里可以找到它?
【解决方案2】:

看看这篇(相当老但希望有用的)Linux Journal 文章:Memory Leak Detection in Embedded Systems

它列出的一些工具:mtracememwatchdmalloc

【讨论】:

  • 我正在寻找大多数支持 C 的工具。你知道我上面的环境设置支持 C++ 的一些工具吗?
  • @linuxdeveloper 我认为这些工具主要支持 C 并不重要。C++ 内存管理无论如何都会归结为 glibc 标准接口。
猜你喜欢
  • 2017-05-06
  • 2013-12-25
  • 2016-04-02
  • 1970-01-01
  • 2011-02-20
  • 2010-10-31
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多