gcc -fprofile-arcs:如何在自定义RTOS

时间:2017-12-07 23:56:35

标签: c++ gcc arm gdb profiling

gccbunch of options 可用于运行时分析,可在程序执行期间生成输出。

例如:gcc -fprofile-arcs

  

添加代码,以便检测程序流弧。执行期间   程序记录每个分支和调用执行的次数   以及它被采取或返回的次数。在支持的目标上   具有优先级支持的构造函数,正确处理分析   构造函数,析构函数和C ++构造函数(和析构函数)   用作全局变量类型的类。

     

当编译的程序退出时,将此数据保存到一个名为的文件中   每个源文件的auxname.gcda 。数据可用于   配置文件导向的优化(-fbranch-probability),或用于测试   覆盖率分析(-ftest-coverage)。每个目标文件的auxname是   如果明确指定,则从输出文件的名称生成   它不是最终的可执行文件,否则是它的基本名称   源文件。在这两种情况下,都会删除任何后缀(例如foo.gcda   用于输入文件dir / foo.c,或dir / foo.gcda用于指定为的输出文件   -o dir / foo.o)。

我正在运行没有文件系统的自定义C ++ RTOS,因此程序不能像粗体字一样使用与Linux / Windows / QNX相同的机制“保存”数据

问题

如果可能的话,如何在没有文件系统的自定义RTOS上使用-fprofile-arcs(或生成文件的任何其他运行时配置文件选项)?

是否可以通过提供“作家”类来重定向信息?如果是这样,我可以使用JTAG提供的任何接口将数据流式传输到PC。

说到调试器,是否可以使用gdb和JTAG连接以某种方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

我必须做一次类似的事情 - 我是在代码覆盖之后。幸运的是,我能够获得VectorCast许可证,该许可证可以在编译之前检测源并在内存中进行簿记。无法记住我在为仪表化的gcc代码提供存根方面有多紧密。

如果您的重点是在RTOS嵌入式环境中进行分析,那么您可以定期记录程序计数器并运行足够长的时间来收集有意义的数据。