问题描述
我想在OpenJDK中获得Hotspot JVM的代码覆盖,所以我准备如下:
bash configure --with-boot-jdk=$my_path_to_boot_jdk1 --enable-native-coverage --disable-warnings-as-errors
make images
在make
之后,我检查了./build/*/images/jdk/bin/java -version
是否有效,因此我完成了代码覆盖范围的OpenJDK构建。
-
我注意到在OpenJDK中我只需要覆盖代码的某些部分。因此,我将
.gcno
个文件保留在目录hotspot/variant-server/libjvm/objs
中,并删除了其他目录中的.gcno
个文件。 -
最后,我在运行诸如
lcov
之类的Java命令之前和之后都使用java -version
进行了覆盖。
#!/bin/zsh
# set some variables
projectDir='hotspot-openjdk-jdk11/'
srcDir="$projectDir"'src/'
javaApp="$projectDir"'build/linux-x86_64-normal-server-release/images/jdk/bin/java'
# a) Resetting counters
lcov -z -d "$projectDir"
# b) create baseline coverage data file
lcov -c -i -d "$projectDir" -b "$srcDir" -o base.info --ignore-errors graph
# run app in the jdk,such as `java -version`
$javaApp -version
# c) Capturing the current coverage state to a file
lcov -c -d "$projectDir" -b "$srcDir" -o test.info --ignore-errors graph
# d) combine baseline and test coverage data
lcov -a base.info -a test.info -o coverage.info
我的问题在这里:
- 我构建OpenJDK的方法对吗?我想使用
gcov
和lcov
收集代码覆盖率。 - 我的过滤
.gcno
文件的方法正确吗?就是说,仅删除.gcno
文件就可以了吗? - 我的方法是在运行Java命令之前和之后捕获代码覆盖率的方法吗?我有一个警告
lcov: WARNING: negative counts found in tracefile test.info
,但我不知道这有没有关系。
感谢您的回答!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)