2012-11-19 128 views
1

我想對嵌入式目標上的C++源代碼執行代碼覆蓋。 基本思路是,使用gcc打開-frofile-arcs -ftest-coverage生成一個精靈。 將其下載到ARM設備上,然後收集數據以使用gcov分析代碼覆蓋率。使用arm-none-eabi-gcc從cpp生成elf文件

如何使用arm-none-eabi-gcc命令生成一個elf文件。 我已經設置了GNU ARM工具鏈並設置了env變量。 我可以使用arm-none-eabi-g ++ -c -mthumb -mcpu = cortex-m3 -fprofile-arcs -ftest-coverage filename.cpp -o filename.elf?

在此先感謝!

回答

0

我不確定你想要做的事實際上是可能的。我認爲GCC中的分析選項需要一些操作系統支持。您可能更願意查看Keil/ARM提供的分析工具。 Streamline profiler的社區版本可能對你有用,請檢查ARM網站。

+0

是很好的解釋我要尋找一個軟件工具,以獲取代碼覆蓋率。Profiler使用跟蹤來獲取數據,然後做代碼覆蓋。我想要一些與此相關的東西 - > http://sysrun.haifa.il.ibm.com/hrl/greps2007/papers/gcov-on-an-embedded-system.pdf。 – aditya3524

+1

本文的關鍵部分是「編譯一個沒有文件系統且沒有C標準庫的PPC目標」。您需要編寫自己的版本來在運行時記錄覆蓋率數據。 –

+0

是的,但對我來說仍然是第2步。首先,我需要生成一個gcov打開的精靈 - > http://balau82.wordpress.com/2010/02/14/simplest-bare-metal-program-for-arm/ ---我在哪裏可以得到startup.s和cortex-m3的鏈接器。我沒有完全理解鏈接器部分。有什麼建議麼? – aditya3524

0

不,您需要做更多。你需要鏈接到gcov庫。這可以用-lgov & -fprofile-arcs鏈接器標誌希望你的鏈接腳本具有.got和.plt部分。

上面只會生成.gcno文件。 .gcda文件在硬件內部運行時生成。等待應用程序退出或添加您自己的包裝來創建.gcda文件。

最後,您需要找到一種方法從您的硬件中提取該.gcda文件。

所有abvoe在
https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/