1

当我尝试通过 Plink 执行以下 lcov 命令时(我给 Plink 一个文本文件作为包含以下命令的参数)

lcov --capture --directory . --output-file coverage.info

结果是

GNU gcov 1.5 版从 . 扫描。对于 .da 文件 ... gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] 文件 geninfo:在 / 的模式匹配 (m//) 中使用未初始化的值home/myUser/lcov/lcov/usr/bin/geninfo 第 1874 行。gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] 文件 geninfo:使用未初始化的值/home/myUser/lcov/lcov/usr/bin/geninfo 第 3622 行的模式匹配 (m//)。 geninfo:在 /home/myUser/lcov/lcov/usr 的模式匹配 (m//) 中使用未初始化的值/bin/geninfo 第 3622 行。 geninfo:错误:在 .! 中找不到 .da 文件

似乎 geninfo 需要.da文件而不是.gcda文件。当我在没有 Plink 的情况下(在同一个 CWD 中)执行相同的命令时,lcov 运行良好并生成一个有效的.info文件。当我通过 PuTTY 手动执行它时,它也运行良好。

这可能是什么原因?

4

2 回答 2

1

问题更普遍。Plink 使用不同的环境变量。解决方案是手动设置正确的环境变量。在我的情况下,我运行 perl 脚本,所以我在文件的头部添加了:

use Env;
$ENV{PATH} = "correct PATH variable";

缺少环境变量导致代码获取错误的 gcov 版本,因此搜索 .da 文件而不是属于较新 lcov 版本的 .gcda 文件

于 2014-05-11T15:12:55.130 回答
0

将 lcov 版本升级到最新版本解决了该问题。旧版本的 lcov 搜索 .da 而不是 .gcda。更新到最新版本 1.13 解决了这个问题

于 2019-02-28T17:15:58.087 回答