当我尝试通过Plink执行以下lcov命令时(我给Plink一个文本文件作为包含以下命令的参数)
lcov --capture --directory . --output-file coverage.info
以
结果GNU gcov 1.5版从中捕获覆盖数据。 扫描。 for .da files ... gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] file geninfo:在模式匹配中使用未初始化的值 (m //)at / home / myUser / lcov / lcov / usr / bin / geninfo line 1874. gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] file geninfo:未初始化的使用 模式匹配中的值(m //)/ home / myUser / lcov / lcov / usr / bin / geninfo line 3622. geninfo:在模式匹配中使用未初始化的值(m //) at / home / myUser / lcov / lcov / usr / bin / geninfo line 3622。 geninfo:错误:在。!
中找不到.da文件
似乎geninfo需要 .da 文件而不是 .gcda 文件。 当我在没有Plink的情况下执行相同的命令(在同一个CWD中)时,lcov运行正常,并生成一个有效的 .info 文件。当我手动执行PuTTY时,它也运行正常。
这可能是什么原因?
答案 0 :(得分:1)
问题更为笼统。 Plink使用不同的环境变量。解决方案是手动设置正确的环境变量。在我的情况下,我运行perl脚本,所以我添加在文件的头部:
use Env;
$ENV{PATH} = "correct PATH variable";
缺少环境变量导致代码出错gcov版本,因此.da文件被分离而不是属于更新的lcov版本的.gcda文件
答案 1 :(得分:0)
将lcov版本升级到最新版本可以解决此问题。较早版本的lcov搜索.da而不是.gcda。更新到最新版本1.13可以解决此问题