解决gcov不能生成.gcda文件,以及其他错误

http://magustest.com/blog/whiteboxtesting/gcov-data-file-relocation/

跟开发沟通了一下,我们的程序不是在每台开发机上都能成功编译的,因为需要很多第三方库,等等……所以就登陆到他的开发机上把程序编译好,然后拷贝 到我自己的机器上运行。问题就出在这里,编译的时候在机器A上,路径是/home/qli/debug,我在机器B上运行的目录是 /home/jchen/work/,程序运行完毕生成.gcda文件失败,出现若干个提示如下:

profiling:/home/qli:Cannot create directory profiling:/home/qli/debug/server/Selection.pb.gcda:Skip
在我的运行环境中没有相应的目录,所以不能生成.gcda文件,Google了一下发现,只要设一下GCOV_PREFIX和 GCOV_PREFIX_STRIP这两个环境变量就好了。GCOV_PREFIX就是制定生成数据文件的前缀,GCOV_PREFIX_STRIP就是 需要在原来的路径上去掉多少层目录,这2个变量配合使用就能把数据文件生成到我们想要的地方。假如我编译时候的路径是“/home/qli/debug /server/”,我现在的运行路径是“/home/jchen/work/ads/ads_server/server/”,那么执行如下命令即可 在我的运行环境中没有相应的目录,所以不能生成.gcda文件,Google了一下发现,只要设一下GCOV_PREFIX和 GCOV_PREFIX_STRIP这两个环境变量就好了。GCOV_PREFIX就是制定生成数据文件的前缀,GCOV_PREFIX_STRIP就是 需要在原来的路径上去掉多少层目录,这2个变量配合使用就能把数据文件生成到我们想要的地方。假如我编译时候的路径是“/home/qli/debug /server/”,我现在的运行路径是“/home/jchen/work/ads/ads_server/server/”,那么执行如下命令即可
export GCOV_PREFIX=”/home/jchen/work/ads/ads_server/server/” export GCOV_PREFIX_STRIP=4
执行完这两行命令,就可以开始运行被测程序,然后正常退出,就会看到.gcda文件生成出来了。 执行完这两行命令,就可以开始运行被测程序,然后正常退出,就会看到.gcda文件生成出来了。
.gcda文件生成了就可以用lcov直接处理它们,但是我在处理的过程中遇到以下错误:“stamp mismatch with graph file” .gcda文件生成了就可以用lcov直接处理它们,但是我在处理的过程中遇到以下错误:“stamp mismatch with graph file”
Processing Ads_Request.gcda /home/jchen/work/ads/ads_server/server/xxx.gcda:stamp mismatch with graph file geninfo: WARNING: gcov did not create any files for /home/jchen/work/ads/ads_server/server/xxx.gcda!
Processing Ads_Request.gcda /home/jchen/work/ads/ads_server/server/xxx.gcda:stamp mismatch with graph file geninfo: WARNING: gcov did not create any files for /home/jchen/work/ads/ads_server/server/xxx.gcda!
导致出现这个错误的原因是.gcda和.gcno文件并不是同一次build出来的,它们2个文件的时间戳就不一样了,很简单,更新所有的.gcno文件即可。 导致出现这个错误的原因是.gcda和.gcno文件并不是同一次build出来的,它们2个文件的时间戳就不一样了,很简单,更新所有的.gcno文件即可。
export GCOV_PREFIX=”/home/jchen/work/ads/ads_server/server/” export GCOV_PREFIX_STRIP=4 执行完这两行命令,就可以开始运行被测程序,然后正常退出,就会看到.gcda文件生成出来了。 .gcda文件生成了就可以用lcov直接处理它们,但是我在处理的过程中遇到以下错误:“stamp mismatch with graph file” Processing Ads_Request.gcda /home/jchen/work/ads/ads_server/server/xxx.gcda:stamp mismatch with graph file geninfo: WARNING: gcov did not create any files for /home/jchen/work/ads/ads_server/server/xxx.gcda! 导致出现这个错误的原因是.gcda和.gcno文件并不是同一次build出来的,它们2个文件的时间戳就不一样了,很简单,更新所有的.gcno文件即可。
经验分享 程序员 微信小程序 职场和发展