如何 运行 gcov on bare metal (without file system)
how to run gcov on bare metal (without file system)
我是 运行 Cortex M4 上的 C++,我想开始进行自动化单元测试和覆盖。
gcov
将其输出文件 - .gcno, .gcda
- 写入目标 这是不行的,因为我没有文件系统。
问题
是否可以 "intercept and redirect" 使用 gdb
将这些写入 PC?
我想通过 Python 脚本自动执行这些测试:
- 从数据库获取单元测试
- 编译
- 转移到目标板
- 运行
- 将结果重定向到 PC
所以,我不知道 gcov,谢谢。
快速查看 man gcov
表明我的系统上有它并且存在以下选项:
-t, --stdout Output to stdout instead of a file
我好久没做了python,但是你应该可以创建一个memory-only文件,假设打开的文件句柄是8,使用:
gcov -t [whatever you are doing] >&8
-t 参数告诉 gcov 打印到标准输出而不是写入文件,>&8 覆盖标准输出(如所执行的程序所见)为文件句柄 8 而不是 1(在大多数 unix/posix/whateveryoucallit, 无论如何).
当然是在 bash 中,您可以从 python 中调用它,或者转码为您在 python 中实现此目的的方式。
我还没有尝试过,所以如果它有帮助(或者如果没有)请务必留下一个标记以帮助未来的读者。
看起来有些人正在这样做(在裸机上使用 gcov)
https://dzone.com/articles/gnu-code-coverage-on-embedded-targets
http://allsoftwaresucks.blogspot.com/2015/05/gcov-is-amazing-yet-undocumented.html
我是 运行 Cortex M4 上的 C++,我想开始进行自动化单元测试和覆盖。
gcov
将其输出文件 - .gcno, .gcda
- 写入目标 这是不行的,因为我没有文件系统。
问题
是否可以 "intercept and redirect" 使用 gdb
将这些写入 PC?
我想通过 Python 脚本自动执行这些测试:
- 从数据库获取单元测试
- 编译
- 转移到目标板
- 运行
- 将结果重定向到 PC
所以,我不知道 gcov,谢谢。
快速查看 man gcov
表明我的系统上有它并且存在以下选项:
-t, --stdout Output to stdout instead of a file
我好久没做了python,但是你应该可以创建一个memory-only文件,假设打开的文件句柄是8,使用:
gcov -t [whatever you are doing] >&8
-t 参数告诉 gcov 打印到标准输出而不是写入文件,>&8 覆盖标准输出(如所执行的程序所见)为文件句柄 8 而不是 1(在大多数 unix/posix/whateveryoucallit, 无论如何).
当然是在 bash 中,您可以从 python 中调用它,或者转码为您在 python 中实现此目的的方式。
我还没有尝试过,所以如果它有帮助(或者如果没有)请务必留下一个标记以帮助未来的读者。
看起来有些人正在这样做(在裸机上使用 gcov)
https://dzone.com/articles/gnu-code-coverage-on-embedded-targets http://allsoftwaresucks.blogspot.com/2015/05/gcov-is-amazing-yet-undocumented.html