在嵌入式设备上使用valgrind

时间:2014-03-19 07:26:14

标签: c embedded valgrind

我有这样的设置。我需要在一些嵌入式设备上进行编程,这些设备在规范中称为运行Linux(尽管当你打开设备时,显然显示器没有显示与linux相关的任何内容 - 小显示)。 嵌入式设备有自己的SDK。 现在,我想用valgrind来检查内存管理/分配。 我可以使用valgrind来检查为我的设备编写的程序吗? 我看到的问题是该程序可能包含一些特定于设备的SDK调用,因此该程序可能不会在我在桌面上运行的普通fedora linux上运行 。 我有什么选择?

2 个答案:

答案 0 :(得分:3)

也许

  1. 当然,请确保您真正运行Linux。

  2. 找出硬件平台; Valgrind supports quite a few platforms但不是全部。

  3. 考虑您的平台是否具有备用资源(内存和CPU速度);运行Valgrind是非常昂贵的。

  4. 如果所有这些检查都没问题,那么你应该能够运行Valgrind,当然你可以把它放到目标机器上。当然,您可能需要自己build and install

    我假设您有某种形式的终端/控制台访问权限,即通过串口,telnet或可用于在目标上运行程序的东西。

    更新:根据评论中的反馈,我开始怀疑您在特定设备上运行Valgrind的可能性。

答案 1 :(得分:3)

在嵌入式设备上运行valgrind可能非常具有挑战性,如果不是不可能的话。

您可以做的是创建单元测试,并在主机平台上使用valgrind执行它们。这是一种至少检查部分代码的内存问题的方法。

其他选项是使用平台模拟,并在模拟器中运行程序(同样在主机系统上)。 QEMU是非常着名的开源模拟器。