2012-07-17 25 views
14

Tôi đang làm việc trên một loạt ứng dụng iOS sẽ chia sẻ một codebase chung. Tôi đã phát triển codebase chung như một thư viện tĩnh và muốn các biểu tượng gỡ lỗi của nó được bao gồm trong tệp .dSYM của ứng dụng chính. Sự hiểu biết của tôi là điều này là có thể, nhưng tôi chưa nhận được nó làm việc.Các biểu tượng gỡ lỗi thư viện tĩnh của iOS không được bao gồm trong dSYM

Codebase chung trong dự án của riêng nó có thư viện tĩnh làm mục tiêu. Dự án này được kéo vào dự án của ứng dụng chính. Trong giai đoạn xây dựng của mục tiêu ứng dụng chính, tôi đã thêm thư viện tĩnh dưới dạng Phụ thuộc mục tiêu và trong Liên kết nhị phân với thư viện. Dự án xây dựng và chạy như mong muốn.

Bây giờ, nếu tôi tạo lưu trữ từ dự án chính, tôi có thể xem lưu trữ đó trong Trình tìm kiếm và tệp chứa tệp .dSYM có thể được sử dụng để tượng trưng cho nhật ký sự cố. Tuy nhiên, .dSYM chỉ chứa các biểu tượng cho ứng dụng chính, không phải cho thư viện tĩnh. Để quá mức khẳng định điều này, tôi chạy như sau:

dwarfdump /path/to/app.dSYM

Và đầu ra (chủ yếu) không chứa bất kỳ biểu tượng từ thư viện tĩnh. Ngoại lệ duy nhất tôi đã tìm thấy là AppDelegate của dự án chính của tôi là một lớp con của một đối tượng trong thư viện tĩnh và có các mục nhập cho lớp siêu đó trong .dSYM. Tuy nhiên, không có lớp nào khác có mặt.

Trong Cài đặt xây dựng mục tiêu của dự án thư viện tĩnh, tôi đã thiết lập như sau:

  • Biểu tượng Strip gỡ lỗi Trong Copy: NO
  • Strip liên kết sản phẩm: NO
  • Tạo gỡ lỗi biểu tượng: YES
  • Ký hiệu Ẩn theo Mặc định: NO

Nếu có ai có thể đưa ra một số hướng dẫn, tôi sẽ đánh giá rất cao nó.

+0

Bạn đang sử dụng phiên bản XCode nào? – misnomer

+0

bạn đã quản lý vấn đề này chưa? Tôi có cùng một vấn đề, vẫn không thể hiểu được chuyện gì đang xảy ra. – Vincent

Trả lời

1

Không chắc chắn nếu bạn tìm thấy câu trả lời của bạn nhưng tôi đã có vấn đề tương tự chính xác một vài ngày trước. Tôi đã giải quyết vấn đề này bằng cách làm như sau:

  1. Tạo không gian làm việc để giữ dự án chính và cơ sở mã chung (thư viện tĩnh). Hãy chắc chắn rằng các dự án là anh chị em ruột và không phải là cha mẹ/con.
  2. Thêm một sự phụ thuộc mục tiêu và liên kết các codebase chung
  3. Hãy chắc chắn bao gồm những biểu tượng debug trong codebase chung của bạn
  4. Cấu hình các thiết lập không gian làm việc để xây dựng các dự án trong một thư mục chia sẻ (Tôi tin rằng đây là chìa khóa)
  5. Nếu bạn nhận được khiếu nại về việc không thể tìm thấy tiêu đề, bạn có thể phải sửa đổi đường dẫn tìm kiếm tiêu đề người dùng trong cài đặt bản dựng hoặc sử dụng tính năng cây nguồn.
+2

Điều này có tiềm năng trở thành một câu trả lời thực sự tốt. Tuy nhiên, ở một vài điều còn thiếu. Bằng cách "bao gồm các biểu tượng gỡ lỗi", bạn có nghĩa là cài đặt xây dựng GCC_GENERATE_DEBUGGING_SYMBOLS (Tạo các Debug Symbols) có theo mặc định không? Thư mục được chia sẻ cũng không rõ ràng. Theo mặc định, mỗi dự án trong vùng làm việc của bạn sẽ được xây dựng trong thư mục riêng của nó trong dữ liệu có nguồn gốc. Bạn bằng cách nào đó quản lý để có được xcode để xây dựng mỗi dự án trong cùng một thư mục? – Onato

3

Ký hiệu lib tĩnh do hiển thị trong tệp dSYM của ứng dụng và dwarfdump sẽ tiết lộ điều đó.

dwarfdump -a path/to/app.dSYM >dsymAsText.txt 

Điều đó sẽ cho bạn thấy biểu tượng của lib.

Tuy nhiên nếu bạn (như tôi đã được gần đây) tìm kiếm một bảng biểu tượng được tạo ra để đi cùng với chỉ lib tĩnh của bạn, tôi đã đi đến kết luận rằng nó sẽ là khá vô ích; một khi nó được biên dịch thành một ứng dụng mới, những biểu tượng và địa chỉ đó sẽ thay đổi và bạn sẽ có một sự bù đắp hoàn toàn khác cho mọi thứ (xin vui lòng ai đó sửa tôi nếu tôi sai).

Tôi không hoàn toàn chắc chắn có cách để vượt qua phần đó.

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