gpt4 book ai didi

opencv - 是否可以使用 gcov 覆盖共享库的代码?

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:24 25 4
gpt4 key购买 nike

我尝试测试一个使用 OpenCV 共享库的可执行文件。当使用 gcov 了解覆盖了哪些代码行时,我只获得有关我的 .cpp 文件和库的 .hpp 的信息。没有显示有关库的 .cpp 文件的信息。

我编译并链接了 -pg --coverage flags。

最佳答案

是的,gcov 可以提供有关共享库的覆盖信息。如果我没有记错我在我的项目中遇到的问题,你可能没有在动态库的链接中包含 --coverage 标志。这是我可以创建的最小示例。

生成文件:

CXXFLAGS += --coverage
LDFLAGS += --coverage

myexec: myexec.cpp libmylib.so

libmylib.so: mylib.o
gcc --coverage -shared -Wl,-soname,libmylib.so -o libmylib.so mylib.o

mylib.o: CXXFLAGS += -fPIC

myexec.cpp:

#include "mylib.h"

int main(int argc, char** argv)
{
return is_even(argc);
}

mylib.h

#ifndef MYLIB_H
#define MYLIB_H

int is_even(int num);

#endif

我的lib.cpp

#include "mylib.h"

int is_even(int num)
{
if (num % 2)
return false;
else
return true;
}

make 的输出(因此您可以准确地看到构建的内容):

g++ --coverage -fPIC   -c -o mylib.o mylib.cpp
gcc --coverage -shared -Wl,-soname,libmylib.so -o libmylib.so mylib.o
g++ --coverage --coverage myexec.cpp libmylib.so -o myexec

我使用 LD_LIBRARY_PATH="."运行可执行文件。 ./myexec a,然后运行gcov mylib.cpp。这是 mylib.cpp.gcov 的内容:

    -:    0:Source:mylib.cpp
-: 0:Graph:mylib.gcno
-: 0:Data:mylib.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include "mylib.h"
-: 2:
1: 3:int is_even(int num)
-: 4:{
1: 5: if (num % 2)
#####: 6: return false;
-: 7: else
1: 8: return true;
-: 9:}

关于opencv - 是否可以使用 gcov 覆盖共享库的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13385590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com