2012-01-04 33 views
14

Tôi đã theo dõi Claus's post để thiết lập phạm vi mã trên Xcode 4.2 với LLVM 3.0. Tôi có thể xem các tệp tin kiểm tra thử nghiệm, nhưng chúng chỉ dành cho các lớp thử nghiệm đơn vị của tôi, không phải các lớp dự án thực tế của tôi. Tôi đã cố gắng thiết lập Tạo Kiểm tra Bảo hiểm tập tinInstrument Chương trình luồng để vào mục tiêu chính của tôi, nhưng điều đó không giúp đỡ, vì nó thất bại với các lỗi sau:Phạm vi mã với Xcode 4.2 - Thiếu tệp

fopen $ UNIX2003 gọi từ function llvm_gcda_start_file

Để làm rõ, tôi không nghĩ đó là cách tiếp cận đúng - tôi chỉ thử nó để xem liệu nó có tạo ra vùng phủ sóng mã trên các lớp dự án của tôi không.

Tại thời điểm này, tôi rất sẵn lòng thử bất kỳ thứ gì được bảo hiểm mã hoạt động trên ứng dụng của tôi. Bất kỳ đề xuất?

Trả lời

24

Bạn đang mong đợi sự cố liên kết, profile_rt thư viện sử dụng các chức năng fopen$UNIX2003fwrite$UNIX2003 thay vì fopenfwrite.

Tất cả bạn cần là thêm .c tập tin sau đây để dự án của bạn:

#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); 
} 

Mã này chỉ vẽ lại các chức năng còn thiếu cho những người chuẩn.

Lưu ý về $UNIX2003 hậu tố:

Tôi đã tìm thấy một Apple document nói:

The UNIX™ conformance variants use the $UNIX2003 suffix.

Important: The work for UNIX™ conformance started in Mac OS 10.4, but was not completed until 10.5. Thus, in the 10.4 versions of libSystem.dylib, many of the conforming variant symbols (with the $UNIX2003 suffix) exist. The list is not complete, and the conforming behavior of the variant symbols may not be complete, so they should be avoided.

Because the 64-bit environment has no legacy to maintain, it was created to be UNIX™ conforming from the start, without the use of the $UNIX2003 suffix. So, for example, _fputs$UNIX2003 in 32-bit and _fputs in 64-bit will have the same conforming behavior.

Vì vậy, tôi hy vọng libprofile_rt được liên kết chống lại 10,4 SDK.

+1

Thêm tệp .c này vào dự án của tôi trong XCode 4.3.2 và bật phạm vi phủ sóng và thiết bị cho mục tiêu chính của tôi (chỉ gỡ lỗi) đã hoạt động! Đây là lần đầu tiên tôi đã có đầy đủ chức năng mã bảo hiểm làm việc cho iOS phát triển. Tôi thậm chí còn tích hợp nó với Jenkins bằng gcovr và plugin Coburtura. –

+0

Điều đó làm việc cho tôi 99% thời gian, nhưng tôi vẫn ngẫu nhiên gặp tai nạn. Có suy nghĩ gì không? Khung kiểm tra của chúng tôi sẽ khởi động lại ứng dụng 100 lần. Khi chạy qua đêm và nó luôn xảy ra, nhưng rất liên tục –

+0

@BrianKing Bạn có thể nên gửi một câu hỏi riêng với các chi tiết về sự cố của bạn. – iHunter

Các vấn đề liên quan