2011-06-21 33 views
92

Tôi đang làm việc trên ứng dụng iOS phổ dụng và tôi muốn xem SQL thô trong nhật ký khi tôi đang gỡ lỗi. Có một số thông tin in this blog post về cách bật ghi nhật ký SQL thô để phát triển Dữ liệu lõi iOS. Ví dụ đã cho là cho XCode 3 và nó chỉ không rõ ràng với tôi làm thế nào để kích hoạt tính năng này trong XCode 4.XCode4 và dữ liệu cốt lõi: Cách bật gỡ lỗi SQL

Tôi đã thử "Product" -> "Edit Scheme" và thêm "-com.apple.CoreData. SQLDebug 1 "đến" Đối số đã được thông qua khi khởi chạy ", nhưng tôi vẫn không thấy bất kỳ đầu ra nào trong nhật ký. Không chắc chắn nếu tôi đang tìm kiếm địa điểm sai hoặc chỉ cần chuyển các đối số không chính xác.

+1

Cảm ơn cho việc này. Vấn đề chính của tôi là bảng tôi đang tìm kiếm chỉ có hơn 74.000 hàng và tôi muốn có ý tưởng về các truy vấn đang chạy trong bao lâu, vì nó đang khá chậm ngay bây giờ. Tôi tôn trọng thực tế rằng có rất nhiều trừu tượng đang diễn ra, nhưng tôi đã thực sự trong bóng tối về những gì đang xảy ra dưới mui xe. Điều này ít nhất giúp tôi một chút. – oalders

+0

Miễn là bạn hiểu được các hạn chế, bạn nên xem SQL thô, đặc biệt là để tinh chỉnh hiệu suất. Nơi mà mọi người gặp rắc rối là cố gắng tìm ra cách biểu đồ đối tượng đang hoạt động bằng cách nhìn vào SQL thô. Vì không có mối quan hệ trực tiếp giữa hai, nó chỉ dẫn họ lạc lối. – TechZen

Trả lời

142

Bạn nên nhìn vào cùng một vị trí bạn nhận được NSLOGS

Và bạn nên Tới sản phẩm -> Edit Scheme -> Sau đó từ bảng điều khiển bên trái chọn Run YOURAPP.app và đi đến Arguments bảng điều khiển chính của Tab.

Ở đó bạn có thể thêm Đối số được truyền khi khởi chạy.

Bạn nên thêm -com.apple.CoreData.SQLDebug 1

Bấm OK và tất cả đã được đặt.

Chìa khóa ở đây là chỉnh sửa lược đồ bạn sẽ sử dụng để thử nghiệm.

+8

Cảm ơn vì điều này. Hóa ra, như xa như giả lập đi, định dạng của các đối số của tôi là sai như tôi thấy trong một trong những câu trả lời ở đây http://stackoverflow.com/questions/822906/how-do-i-get-the-coredata- debug-argument-to-output-to-the-console Tôi cần truyền một đối số của ** - com.apple.CoreData.SQLDebug ** và đối số thứ hai của ** 1 ** để xem đầu ra SQL. – oalders

+2

bất kỳ suy nghĩ nào về cách in các đối số được chuyển tới cơ sở dữ liệu? cách tiếp cận này hoạt động tốt để xem cách truy vấn được cấu trúc, nhưng nó chỉ in câu lệnh sql, như 'UPDATE ZTABLE SET ZCOLUMN =? WHERE ZID =? 'Và nó không phải là rất hữu ích để thực sự xem dữ liệu được gửi là gì –

+0

Trên thực tế, tôi nghĩ nó sẽ là tốt hơn để thêm nó như là một câu hỏi SO thực sự;) http://stackoverflow.com/questions/12306343/làm thế nào để in-core-data-debug-giá trị –

20

XCode 4

Đó là trong cùng một vị trí tôi quản lý NSZombieEnabled tôi

sản phẩm -> Edit Scheme -> Run YouApp.app gỡ lỗi

Dưới "đối số được truyền vào Launch", dán chính xác :

-com.apple.CoreData.SQLDebug 1

Cảnh báo - công cụ này là rất dài dòng, nếu bạn đang gặp vấn đề cốt lõi dữ liệu, sức mạnh này cũng có giá trị nhìn vào, nhưng nó cũng có thể được nhiều thông tin hơn bạn cần về những điều sai trái.

+0

Bất kỳ cách nào để in this -com.apple.CoreData.MigrationDebug 1 trên tệp chuỗi, để người dùng có thể tải lên tệp nhật ký – rhlnair

5

Tôi đang gặp vấn đề với điều này và sau đó nhận ra đó là một sự thiếu sót ngớ ngẩn, mà tôi cho rằng đó là một sai lầm của một số bạn. Khi tôi nhập đối số trong Xcode (4.3.1), tôi đã bỏ dấu gạch ngang hàng đầu. Tôi sẽ không làm như vậy là tôi nhập nó vào một dòng lệnh, nhưng trong GUI tôi đã bỏ qua nó. Tôi đã không tìm thấy bất kỳ sự khác biệt giữa việc nhập vào 2 arg riêng biệt hoặc một (như một số bài viết đã đề xuất). Vì vậy, sử dụng: -com.apple.CoreData.SQLDebug 1 và không chỉ đơn giản là: com.apple.CoreData.SQLDebug 1 mà làm việc cho tôi trong cả hai mô phỏng và thiết bị thực

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