Подтвердить что ты не робот

Покрытие кода с помощью Xcode 4.2 - Отсутствующие файлы

Я выполнил сообщение Клауса, чтобы настроить покрытие кода на Xcode 4.2 с помощью LLVM 3.0. Я могу видеть файлы тестового покрытия, но они предназначены только для моих классов unit test, а не для моих реальных классов проектов. Я пробовал настроить Генерировать тестовые материалы покрытия и Инструментальный программный поток на Да по моей основной цели, но это не помогло, так как это не удалось выполнить следующую ошибку:

fopen $UNIX2003, вызванный из функции llvm_gcda_start_file

Чтобы уточнить, я не думаю, что даже правильный подход - я просто попробовал его, чтобы увидеть, будет ли он генерировать покрытие кода для моих классов проектов.

На этом этапе я был бы счастлив попробовать все, что покрывало код, работающий над моим приложением. Любые предложения?

4b9b3361

Ответ 1

Вы ожидаете проблемы с компоновщиком, библиотека profile_rt использует fopen$UNIX2003 и fwrite$UNIX2003 функции вместо fopen и fwrite.

Все, что вам нужно, это добавить в проект следующий .c файл:

#include <stdio.h>

FILE *fopen$UNIX2003( const char *filename, const char *mode )
{
    return fopen(filename, mode);
}

size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
{
    return fwrite(a, b, c, d);
}

Этот код просто переназначает отсутствующие функции на стандартные.

Примечание в суффиксе $UNIX2003:

Я нашел документ Apple, в котором говорится:

В вариантах соответствия UNIX ™ используется суффикс $UNIX2003.

Важно. Работа для соответствия UNIX ™ началась в Mac OS 10.4, но не была завершена до 10.5. Таким образом, в 10.4 версиях libSystem.dylib существует множество соответствующих символов (с суффикс $UNIX2003). Список не является полным, и соответствующее поведение вариантов символов может быть неполным, поэтому их следует избегать.

Поскольку 64-разрядная среда не имеет никакого наследия для поддержки, она была создана для соответствия UNIX ™ с самого начала без использования суффикса $UNIX2003. Так, например, _fputs $UNIX2003 в 32-битных и _fputs в 64-битных будет иметь такое же согласованное поведение.

Поэтому я ожидаю, что libprofile_rt будет связан с 10.4 SDK.