2013-07-30 25 views
5

目前我正在開發嵌入式項目。我使用的是IAR Embedded Workbench IDE,目標平臺是基於8051的微控制器。是否可以使用Valgrind工具來檢查我寫的代碼?在嵌入式項目中使用Valgrind

+0

你問過valgrind用戶郵件列表嗎?你檢查過http://valgrind.org/嗎? – NWS

+1

您應該檢查此頁面,Valgrind支持的平臺[1]。不支持8051微控制器指令集。 [1]:http://valgrind.org/info/platforms.html – jclin

+0

@jclin發表您的評論作爲答案。 – Ross

回答

3

不,並且是*。 No:正如另一位評論者所說,Valgrind不能在8051體系結構上運行,所以你不能像在x86系統上那樣使用Valgrind。

是*(星號(*),是因爲它是一個有限的 「是」)

但是你可以,如果你在你的代碼的非8051/IAR-特定部分使用Valgrind的:

  1. 從體系結構/編譯器不可知的代碼中分離8051特定的和IAR特定的代碼。
    • 您可能會想要這樣做,因此代碼不會因分離不可知代碼而變得更大。 (我假設的代碼大小是非常珍貴的,因爲你上的8051工作)
  2. 用gcc編譯架構/編譯器無關的代碼和你的臺式機/筆記本電腦的開發機器上使用Valgrind的運行它,它可能是一臺x86機器。
    • 當然,您可以使用任何其他Valgrind支持的架構/編譯器,x86/gcc不是您唯一的選擇。

這樣Valgrind的就可以檢查你的一些代碼,這是聊勝於無的。

而分離代碼的編譯器/芯片特定部分也將使它更具可移植性和可重用性。

哦,這是沒有直接關係,但你也應該考慮使用像PC - 皮棉的靜態分析程序:http://www.gimpel.com/html/index.htm

它檢查一些事情,Valgrind的檢查,很多東西Valgrind的不檢查。此外,它將檢查您的代碼的全部,而不僅僅是非8051/IAR代碼。

有很多類似的工具; PC-Lint是我見過的最流行的。

+0

沒有。當然,您可以隨時在其他體系結構上檢查您的代碼是否存在常見錯誤,但可能找不到某些與體系結構相關的問題。對我來說,我發現了一個endian的bug。在Linux 32/64位中,Valgrind沒有任何問題。但是,這是Sun SPARC上的一個問題。 – jclin

+0

這就是我所說的「這樣Valgrind就能夠檢查你的一些代碼,這比沒有好。」由於您運行在不同的體系結構上,因此不會發現與8051相關的體系結構問題。 – svec

+0

我想你應該知道8051是什麼。它是一個微控制器,不是通用的CPU。它不會有全功能的操作系統,許多操作都是通過直接的IO和硬件中斷和/或使用非常小的RTOS來完成的。因此,大部分爲8051編寫的程序都無法在使用GCC的通用操作系統上編譯和運行,所以我認爲不可能在Valgrind下檢查8051內存問題。 – jclin

1

您應該檢查此頁,Valgrind Supported Platforms。 Valgrind不支持8051微控制器指令集。

此外,你應該知道Valgrind是一個指令模擬器。這意味着您必須在系統上運行Valgrind,並使用C或其他POSIX庫的OS和基礎層來運行代碼,以模擬程序的內存讀/寫或分析。所以8051不可能運行Valgrind。

相關問題