2011-12-13 22 views
15

Xin chào tràn ngăn xếp!Bao gồm dữ liệu tùy chỉnh vào vùng đổ vỡ iOS

Một câu hỏi đơn giản dành cho bạn: có thể nhúng dữ liệu lỗi tùy chỉnh vào các bãi tai nạn iOS được tạo tự động mà tôi nhận được từ người dùng khi ứng dụng của tôi gặp sự cố trên thiết bị của họ không?

Ví dụ: Cơ sở dữ liệu SQlite của tôi sẽ không hoạt động vì một số lý do (chẳng hạn, tệp cơ sở dữ liệu bị hỏng) .. Tôi không thể khôi phục từ lỗi này, vì vậy tôi ném ngoại lệ và nhúng ngoại lệ lỗi sqlite chi tiết thông điệp. Vấn đề là, đổ sụp đổ của ứng dụng sẽ không chứa thông báo ngoại lệ, do đó, nó không dễ dàng để biết theo điều kiện ứng dụng bị rơi.

Có ai biết cách đưa mọi thứ vào báo cáo kết xuất sự cố không? Hoặc bạn có cách nào khác được đề nghị để báo cáo sự cố sản xuất cho người phát triển không?

Cảm ơn!

Trả lời

29

Không, bạn không thể quảng cáo dữ liệu của chính mình vào báo cáo sự cố. Bạn cũng không thể tự động truy cập các báo cáo sự cố do iOS tạo ra do hộp cát.

Vì vậy, đề nghị của tôi là như sau:

  1. Đối đăng nhập dữ liệu riêng của bạn, sử dụng Cocoalumberjack. Nó nhanh hơn nhiều so với NSLog hoặc các khung đăng nhập khác ngoài đó và có một tùy chọn để đăng nhập các tin nhắn của bạn vào một tập tin. Bây giờ khi một ngoại lệ xảy ra, hoặc bất cứ khi nào bạn muốn, hãy đăng nhập vào một tệp. Nhưng nếu ứng dụng của bạn gặp sự cố ngay tại thời điểm bạn thêm nội dung nào đó vào tệp nhật ký, rất có thể ứng dụng sẽ bị thiếu, vì ứng dụng đã bị lỗi vào cùng một thời điểm.

    Vì vậy, thay vì không thể nắm bắt chính xác câu lệnh SQL chính xác. Nhưng báo cáo sự cố sẽ cung cấp cho bạn đủ thông tin để hiểu điều gì đang xảy ra, với việc bổ sung vào những gì bạn đã đăng nhập đang được thực hiện trước đó. Ví dụ. bạn có thể đăng nhập chuỗi tìm kiếm được sử dụng theo cách SQL trước khi SQL được thực hiện.

    Nói chung, cố gắng không đăng nhập quá nhiều.

  2. Để bắt báo cáo sự cố, bạn không nên làm gì khác ngoài giải pháp dựa trên khung nguồn mở PLCrashReporter, có thể safely gặp sự cố, cũng khi ứng dụng đã có trong cửa hàng ứng dụng! Bắt buộc ngoại lệ, hãy kiểm tra this article để xem lý do!

    iTunes Connect cũng cung cấp cho bạn xem một số báo cáo sự cố, nhưng phải mất đến 2 tuần để xem một số báo cáo, nhưng đến nay không phải là tất cả, ví dụ: được chỉ ra bởi Camera+ developers. Vì vậy, bạn nên sử dụng giải pháp của riêng mình.

    PLCrashReporter sẽ gửi cho bạn báo cáo sự cố định dạng quả táo chuẩn, sẵn sàng cho biểu tượng, để bạn biết nơi xảy ra sự cố trong mã của bạn, bao gồm cả số dòng.

    Một số giải pháp dựa trên PLCrashReporter là:

    • QuincyKit: client mã nguồn mở + máy chủ php, nhóm tai nạn cơ bản, symbolication có thể được tự động từ mac của bạn (Tôi là nhà phát triển này)
    • HockeyApp: Dịch vụ trả tiền, sử dụng khách hàng QuincyKit, nhóm tai nạn nâng cao, biểu tượng được thực hiện đầy đủ trên máy chủ (Tôi thuộc về các nhà phát triển này)
    • Bugsense: Dịch vụ miễn phí, ký hiệu được công bố là tính năng cao cấp
    • AppBlade: dịch vụ trả tiền, symbolication biết
    • Crashlytics: beta tư nhân, tính năng chưa được biết, giải pháp của họ dường như được dựa trên PLCrashReporter
  3. Các giải pháp đề xuất hoặc cho phép gửi dữ liệu tự động khi khởi động tiếp theo hoặc bằng cách hỏi người dùng nếu anh/cô ấy đồng ý gửi.

+0

Chỉnh sửa nhỏ: BugSense hiện đang cung cấp biểu tượng trên thiết bị. –

+1

Cảm ơn Nick. Đó là mới kể từ hôm nay tôi đoán :) Vì vậy, có nghĩa là không có số dòng và bạn yêu cầu các biểu tượng trong nhị phân ứng dụng? – Kerni

+0

Chính xác đúng :) Biểu tượng trở nên có sẵn khi tôi tiếp quản phát triển iOS tại BugSense, vì vậy nó đã ở đó một thời gian. Nó không hoạt động hoàn hảo và số dòng và thông tin tệp bị thiếu. Gần đây tôi đã tìm thấy rằng một số bản dựng biểu tượng ngay cả với một số tùy chọn "tước" và tôi đang cố gắng tìm ra lý do tại sao ... –