2013-07-26 21 views
8

Đôi khi tôi đang cố gắng theo dõi một lỗi thực sự hiếm gặp trong một ứng dụng iOS. Tôi sẽ nhấn nó trong trình gỡ lỗi sau nhiều giờ cố gắng để repro chỉ để có xcode hoặc lldb tai nạn trên tôi trong khi tôi đang gỡ lỗi (thường là nếu tôi đang bước qua mã C + +). Điều này vượt khỏi sự tức giận.Làm cách nào để tự tạo một kết xuất lõi (hoặc tương đương) trong lldb được đính kèm với iOS

Với gdb bạn có thể sử dụng generate-core-dump để tạo một kết xuất cốt lõi của tệp để tôi có thể tải lại nó trong gdb và ít nhất hãy xem tất cả bộ nhớ. Những gì tôi muốn là khả năng làm một cái gì đó tương tự trong lldb để khi xcode treo (như nó luôn luôn có xu hướng làm vào thời điểm tồi tệ nhất) tôi có thể phục hồi phiên gỡ lỗi của tôi mà không cần phải tái tạo vụ tai nạn.

Ứng dụng đang chạy trên iPhone không bẻ khóa, vì vậy tôi không có nhiều quyền truy cập vào hệ điều hành để thực hiện việc gì đó như xóa bộ nhớ khỏi đó.

Một câu trả lời có thể là chỉ sử dụng gdb thay vì lldb, nhưng tôi nghĩ rằng gây ra một số vấn đề khác mà tôi không nhớ tại thời điểm này, cộng với nó không có một số tính năng hữu ích trong lldb.

+0

'Phần kết xuất hình ảnh' có phải là lệnh bạn đang tìm không? Xem [trang này] (http://lldb.llvm.org/lldb-gdb.html) – borrrden

Trả lời

12

CẬP NHẬT: Xcode 6, phát hành mùa thu năm 2014, bao gồm một lệnh process save-core mới trong lldb - lldb bây giờ có thể tạo ra một coredump của một quá trình người dùng. ví dụ. (lldb) process save-core /tmp/corefile và chờ một lát.

Câu trả lời gốc cho Xcode 5 và lldb cũ hơn, là:

Tính năng này chưa được triển khai trong lldb. Tính năng này không được triển khai trong phiên bản gdb của Apple, hoặc là, cho vấn đề đó.

Trong khi không phải là tính năng thường được yêu cầu, đó là điều mà người khác đã nói sẽ hữu ích. Hy vọng rằng ai đó sẽ có đủ động cơ để thêm khả năng đó vào lldb. Tôi không chắc nó sẽ hoạt động tốt như thế nào trên thiết bị iOS vì nó sẽ liên quan đến lượng dữ liệu khổng lồ đang được chuyển lên Mac qua giao thức không hiệu quả cho việc chuyển dữ liệu lớn - tôi hy vọng nó sẽ rất chậm .

Các tập tin cốt lõi có thể được mở với LLĐB -c/tmp/corefile

+0

Điều này vẫn còn đúng không? –

+1

Có, vẫn không có cách nào để tạo quy trình người dùng coredump với lldb ngay hôm nay (tháng 2 năm 2014) và tôi không biết ai đang thực hiện công việc để triển khai tính năng này ngay bây giờ. –

+1

Cập nhật câu trả lời cần lưu ý rằng Xcode 6 giờ đây có thể lưu các tệp lõi của quy trình người dùng trên Mac OS X. –

0

Nó đáng chú ý là công cụ quá trình thám hiểm dành cho iOS có thể tạo ra bãi cốt lõi của bất kỳ PID (giả sử bạn có rễ hoặc đó là UID tương tự như bạn), mà không ảnh hưởng đến quá trình.

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