6

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

4

2 回答 2

5

不,是*。

否:正如另一位评论者所说,Valgrind 不能在 8051 架构上运行,因此您不能像在 x86 系统上那样使用 Valgrind。

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

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

  1. 将特定于 8051 和特定于 IAR 的代码与架构/编译器无关的代码分开。
    • 您可能希望这样做,这样代码就不会因为分离不可知的代码而变得更大。(我假设代码大小非常宝贵,因为您正在使用 8051。)
  2. 使用 gcc 编译与架构/编译器无关的代码,并在您的桌面/笔记本电脑开发机器上使用 Valgrind 运行它,这可能是 x86 机器。
    • 当然,您可以使用任何其他 Valgrind 支持的架构/编译器,x86/gcc 不是您唯一的选择。

通过这种方式,Valgrind 将能够检查您的一些代码,这总比没有好。

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

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

它会检查 Valgrind 会检查的一些东西,以及 Valgrind 不会检查的许多东西。此外,它还会检查您的所有代码,而不仅仅是非 8051/IAR 代码。

那里有很多类似的工具。PC-Lint 是我见过的最流行的。

于 2013-08-01T01:00:38.953 回答
1

你应该检查这个页面,Valgrind支持的平台。Valgrind 不支持 8051 微控制器指令集。

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

于 2013-07-30T14:28:36.343 回答