在嵌入式项目中使用Valgrind

时间:2013-07-30 06:24:27

标签: embedded valgrind

目前我正在开发一个嵌入式项目。我使用的是IAR Embedded Workbench IDE,目标平台是基于8051的微控制器。是否可以使用Valgrind工具检查我写的代码?

2 个答案:

答案 0 :(得分:4)

不,是的。*

否:正如另一位评论者所说,Valgrind不能在8051体系结构上运行,所以你不能像在x86系统上那样使用Valgrind。

是* :(星号(*)是因为它是有限的“是”)

但是,如果您符合以下条件,则可以在代码的非8051 / IAR特定部分使用Valgrind:

  1. 将8051特定代码和特定于IAR的代码与体系结构/编译器无关的代码分开。
    • 您可能希望这样做,因此分离不可知代码后代码不会变得更大。 (我假设代码大小非常重要,因为你正在使用8051.)
  2. 使用gcc编译体系结构/编译器不可知代码,并在台式机/笔记本电脑开发机器上运行Valgrind,这可能是x86机器。
    • 当然您可以使用任何其他Valgrind支持的架构/编译器,x86 / gcc不是您唯一的选择。
  3. 这样Valgrind就可以检查你的一些代码了,这比什么都没有好。

    分离代码的编译器/芯片特定部分也将使其更具可移植性和可重用性。

    哦,这不是直接相关的,但你也应该考虑使用像PC-Lint这样的静态分析程序:http://www.gimpel.com/html/index.htm

    它检查Valgrind检查的一些事情,以及Valgrind不检查的许多事情。另外,它会检查所有代码,而不仅仅是非8051 / IAR代码。

    那里有很多类似的工具; PC-Lint是我见过的最受欢迎的。

答案 1 :(得分:1)

您应该查看此页面,Valgrind Supported Platforms。 Valgrind不支持8051微控制器指令集。

此外,你应该知道Valgrind是一个指令模拟器。这意味着你必须在系统上运行Valgrind,它运行你的代码与OS和C的基础层或其他POSIX库来模拟你的程序的内存读/写或分析。所以8051不可能运行Valgrind。