这是命令 ggcov-run,可以使用我们的多个免费在线工作站之一(例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器)在 OnWorks 免费托管提供商中运行
程序:
您的姓名
ggcov-run - 运行仪器测试程序
概要
ggcov-运行 [选项[--] 程序 参数...
商品描述
Ggcov运行 可用于运行测试程序,使用仪器进行检测 GCC --覆盖率 建成时,
在某些条件下。它的使用完全是可选的,作为默认行为
gcc 仪器被设计为在大多数情况下有用。
Ggcov运行 将程序及其参数作为参数,并使用一些参数运行该程序
行为改变(以 痕迹)。如果没有给出任何选项,则该程序是
无需任何修改即可运行。
GCDA 文件 全球布局
gcc 工具默认行为的一个问题涉及位置
的覆盖数据。仪器测试程序将读取、修改和重写 .gcda 档
当程序退出时。这些文件的位置由编译器选择
编译时间;这些文件将被放置在相应的构建目录旁边 .c
文件。编译器将此信息保存在 .o 文件。例如,如果您编译
文件 foo.c 在目录中 /home/me/软件/quux,然后是路径名
/home/me/software/quux/foo.gcda 被硬编码在测试程序中。当然,节目
检查覆盖率数据,例如 冠状病毒,寻找 .gcda 文件在那里。
对于许多测试应用程序来说,这工作得很好。然而,当
检测程序需要在另一台机器上运行,或者作为另一个用户ID,或者
构建目录是易失性的,或者在构建目录的任何其他测试场景中
要么不存在,要么无法被正在运行的测试程序写入。在这些情况下,您
需要在测试之前和之后进行一些临时文件移动以获得 .gcda
文件位于具有正确权限的正确计算机上的正确位置。
更好的方法是使用 ggcov-运行 与 --gcda-前缀 选项。该选项作为
一个值,一个目录,它被添加到每个目录的路径名前面 .gcda 将测试程序归档
访问。因此,继续上面的示例,像这样运行测试程序:
me$ ggcov-run --gcda-prefix=/tmp/gcda ./testprogram 测试参数...
会导致 .gcda 正在写入的文件 /tmp/gcda/home/me/software/quux/foo.gcda.
目录树将自动创建为 .gcda 文件被写入,并且
文件和目录权限将允许所有用户进行读取访问。
需要注意的是 冠状病毒 也有一个 --gcda-前缀 可用于搜索的选项 .gcda
文件位于构建目录以外的位置。在我们的例子中:
me$ cd /home/me/software/quux
me$ ggcov --gcda-prefix=/tmp/gcda -r 。
配置
-p DIR, --gcda-前缀=DIR
导致测试程序及其运行的任何子进程重定向任何绝对路径
文件名结尾为 .gcda 到目录下的文件名 DIR.
洞穴
Ggcov运行 使用共享库垫片和 LD_预载 运行时链接器的功能
拦截被检测程序的某些库调用。为了非常好的安全性
原因 LD_预载 对于 setuid 或 setgid 程序禁用。所以如果你的测试程序
依赖于 setuid 行为, ggcov-运行 不管用。一种可能的解决方法是使用
须藤 or su 使用前更改用户ID ggcov-运行,像这样:
me$ sudo -u otheruser ggcov-run --gcda-prefix=/foo ./testprogram
使用 onworks.net 服务在线使用 ggcov-run
