3

指定标志时 gcc 是否定义了某种宏-fprofile-generate?基本上,我想在分析时禁用多线程——它似乎有一种破坏 .gcda 文件的方法。

4

1 回答 1

3

这个未回答的问题已经很老了,但是我遇到了类似的问题,所以我希望这对某人有用。

-fprofile-correction在使用多线程应用程序生成的配置文件信息时,您应该尝试启用GCC 编译器标志。根据与此标志相关的GCC 文档:

由于错过了计数器更新,使用多线程程序的检测二进制文件收集的配置文件可能不一致。当指定此选项时,GCC 使用启发式方法来纠正或消除这种不一致。默认情况下,当检测到不一致的配置文件时,GCC 会发出错误消息。

通过更正由于多线程导致的不一致的配置文件值,它将消除指示 .gcda 文件已损坏的错误。

于 2016-07-12T16:35:39.633 回答