Другие люди сообщали, что не могут генерировать покрытие кода с помощью XCode 4 , но я не только не могу этого сделать из XCode 4, я не могу сделать это даже с простой игрушкойпрограмма из командной строки.Я следовал приведенным примерам здесь и здесь , что привело меня к созданию файла cov.c:
#include <stdio.h>
int main (void) {
int i;
for (i = 1; i < 10; i++) {
if (i % 3 == 0)
printf("%d is divisible by 3\n", i);
if (i % 11 == 0)
printf("%d is divisible by 11\n", i);
}
return 0;
}
Затем я использовал следующие команды в попыткедля генерации покрытия кода:
g++ -c -g -O0 --coverage -o $PWD/obj/cov.o $PWD/cov.c
g++ -g -O0 --coverage -o $PWD/bin/cov $PWD/obj/*.o
$PWD/bin/cov
Увы, в каталоге obj нет файла cov.gcno.Фактически, единственные файлы, которые у меня есть после этого: cov.c obj / cov.o bin / cov
Кроме того, если я наберу nm bin/cov
, я получу следующее:
0000000100001048 S _NXArgc
0000000100001050 S _NXArgv
0000000100001060 S ___progname
0000000100000000 A __mh_execute_header
0000000100001058 S _environ
U _exit
0000000100000e40 T _main
U _printf
0000000100001000 s _pvars
U dyld_stub_binder
0000000100000e00 T start
Это говорит о том, что libgcov.a никогда не был связан. Если я заменил
g++ -g -O0 --coverage -o $PWD/bin/cov $PWD/obj/*.o
на:
g++ -g -O0 --coverage -o $PWD/bin/cov -lgcov $PWD/obj/*.o
, я получу точно такие же результаты.
Подробнееинформация:
g++ --version
выход: "i686-apple-darwin11-llvm-g ++ - 4.2 (GCC) 4.2.1 (на основе Apple Inc., сборка 5658) (сборка LLVM 2336.1.00)" - Я также пытался использовать gcc (это llvm-gcc).