Currently I have a bunch of unit tests for my C++ project, but I am not (yet) testing the code coverage. I am compiling the tests with `-O3` optimization flag to expose potential subtle bugs, but it seems if I want to collect coverage information with tools like `gcov`, any optimization flag must be disabled. Should I build the tests twice (one with `-O3`, the other without)? How is this problem usually dealt with?