Code Coverage with GCOV

Hello,
I was trying to get Code Coverage for LLDB with GCOV on Linux by adding the corresponding flags in the CMake files, but I am facing problem with lldb-server, which does not give seem to generate the gcda files. The host side does generate the gcov files although. The lldb-server does generate the gcov files if it is started in Standalone mode but it does not generate the gcov files if started by LLDB. Has anyone tried this already ? How can I get Code Coverage for lldb / lldb-server on Linux ?

Best Regards,
A Ravi Theja

Hi Ravitheja,

Could you show us the diff to your cmake configuration? You may want to take a
look at how the LLVM_BUILD_INSTRUMENTED cmake option is implemented to
double-check that you've got something reasonable (see: llvm/CMakeLists.txt and
cmake/modules/HandleLLVMOptions.cmake).

Also, you may want to double-check that the gcda files are being written to the
right directory.

best,
vedant

Hello,
I added the following lines to the lldb-server and lldb CMakeLists.txt

set(CMAKE_C_FLAGS “${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage”)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage”)

I am able to get the lldb-server gcov files when I start its instance and then connect to it. But since lldb starts the lldb-server in different way, the files are not written, because I do see that the gcov instrumentation functions are present in the lldb-server.

Best Regards,
A Ravi Theja

Is it possible that the files are written to an unexpected directory? Have you
tried running the program under strace/dtruss to conclusively determine whether
or not the files are being written? Could you try running lldb-server in lldb
and setting a breakpoint on `llvm_gcda_start_file'?

vedant