2015-03-26 19 views
5

Số liệu CloudKit của tôi trong Production Environment có phần lớn hơn Development và sự khác biệt kỳ lạ khác có thể tồn tại.Bất kỳ cách nào để gỡ lỗi ứng dụng với tập dữ liệu trong môi trường sản xuất?

Có một số khó chịu deadlock bằng ứng dụng của tôi ở Chế độ sản xuất. Có thể gỡ lỗi ứng dụng khách theo bất kỳ cách nào không? Hoặc tôi nên đăng nhập càng nhiều thứ càng tốt và gửi bằng cách nào đó?

Đây là một vấn đề về luồng, vì vậy mà không kiểm tra các chủ đề trong Xcode, nó thực sự là mặc dù để làm bất cứ điều gì. Bất kỳ ý tưởng? Tôi đang sử dụng Core Data để lưu trữ cục bộ.

+0

Tôi đã cố gắng cuộn tròn URL nhưng bị Cấm 403. –

+0

Bạn đã thử nó trên một thiết bị bẻ khóa và sử dụng cycript? –

Trả lời

5
  1. Thay đổi rollback trong mã nguồn, để có thể chạy ứng dụng.
  2. Đồng bộ hóa bản ghi từ Môi trường sản xuất sang Lưu trữ dữ liệu lõi cục bộ.
  3. Sao chép trong menu Thiết bị Xcode cơ sở dữ liệu sqlite từ vùng chứa.
  4. Tạo một dự án tạm thời với cùng một mô hình, điền nó vào cơ sở dữ liệu.
  5. Thiết lập dự án tạm thời để có thể sử dụng vùng chứa CloudKit trước đó.
  6. Đặt lại môi trường phát triển trong Trang tổng quan.
  7. Tải lên tất cả bản ghi từ dự án tạm thời.
  8. Chạy dự án gốc với mã nguồn ban đầu.
0

Tôi khuyên bạn nên sử dụng dịch vụ báo cáo sự cố. Trong khi có một vài lựa chọn, tôi đã làm việc với Crashlytics, và tôi rất hài lòng với những báo cáo mà họ cung cấp, luôn giúp tôi sửa lỗi trong sản xuất.

+0

hmm, nó không phải là một vụ tai nạn, và thiết lập có thể mất thời gian, là nó có thể hiển thị một cái gì đó về vấn đề luồng? –

+0

Phải, đó có thể không phải là ý tưởng tốt nhất nếu bạn không gặp sự cố. Nhưng nếu bạn có một vụ tai nạn nó sẽ cho bạn thấy trạng thái của tất cả các chủ đề tượng trưng, ​​rất dễ dàng để xem những gì từng người đang làm vào lúc này. – pteofil

0

Khi ứng dụng sẽ chạy nền, tại một số thời điểm nó sẽ bị iOS xóa vì chuỗi của bạn sẽ không trả lời -applicationDidEnterBackground, và sau đó bạn sẽ nhận được backtrace của tất cả các chủ đề của bạn.

Nếu bạn muốn có cơ hội kích hoạt sát thương (nếu chủ đề bị khóa không phải là chủ đề chính), bạn có thể lấy một tác vụ nền (- beginBackgroundTaskWithExpirationHandler:) trong các chủ đề làm việc của bạn: nếu chúng bị khóa tại một số điểm, chúng sẽ không bao giờ phát hành nhiệm vụ nền và họ sẽ kích hoạt việc giết.

Bây giờ, chỉ cần đợi trình lên lịch iOS để xóa ứng dụng của bạn và lấy dấu vết ngăn xếp. Trong đó, bạn sẽ có thể tìm ra thủ phạm bằng cách nhìn vào tất cả các backtraces của thread và xác định cái nào bị khóa trong một hàm mutex lock().

Tôi đặt cược bạn thậm chí không cần biểu tượng cho điều đó.

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