Câu hỏi Nhật ký sự cố được tạo bởi iPhone Simulator?


Có bất kỳ nhật ký sự cố nào được tạo bởi iPhone Simulator không?

Trình mô phỏng bị treo rất nhiều nhưng không để lại bất kỳ dấu vết nào trong Bảng điều khiển ... nhật ký sự cố sẽ hữu ích.


84
2017-12-08 03:59


gốc


Tôi không hoàn toàn hiểu tại sao bạn cần bản ghi sự cố. Khi ứng dụng trong trình mô phỏng gặp sự cố nhưng trước khi bạn ngừng gỡ lỗi, tại loại lời nhắc gdb "bt" cho "backtrace" - bạn sẽ nhận được chính xác những gì sẽ xuất hiện trong nhật ký sự cố. (đã không nhận ra có câu hỏi necromancy ở đây, bỏ lỡ năm bài) - Matthew Frederick
Nếu sự cố chỉ xảy ra khi bạn không được trình gỡ rối đính kèm thì bạn sẽ cần nhật ký. - Ian1971
bạn đúng. điều này có ý nghĩa! - Raptor
Bạn cũng có thể xem nhật ký gỡ lỗi (bao gồm cả đầu ra của lệnh lldb) trong "Báo cáo hoa tiêu" trong Xcode (cmd-8). Điều này rất hữu ích để xem đầu ra gỡ lỗi cho các lần chạy trước đó. Nếu trình gỡ lỗi không được đính kèm, thì điều này sẽ không hoạt động rõ ràng. - Sebastien Martin
Nhật ký gỡ lỗi không giống với Nhật ký sự cố, mặc dù cả hai nhật ký đều hữu ích để gỡ lỗi sự cố. - Raptor


Các câu trả lời:


Bảng điều khiển sẽ hiển thị NSLog() đầu ra từ một ứng dụng đang chạy trong trình mô phỏng. Bản ghi sự cố được lưu vào tệp.

Tôi đã tìm thấy một số trong thư mục chính của tôi theo

~/Library/Logs/DiagnosticReports/

Họ có một phần mở rộng tập tin của .crash

Một cái gì đó tôi đã không được tìm ra là làm thế nào để có được chúng để tạo ra ngay cả khi trình gỡ lỗi lấy EXC_BAD_ACCESS tín hiệu.


Cập nhật

Hiện tại, (OSX 10.11.6), nhật ký .crash ~/Library/Logs/DiagnosticReports, là khi nào giả lập chính nó bị treo. Nhật ký cho một ứng dụng crashing (nhưng thiết bị mô phỏng vẫn chạy tốt), là:

~ / Library / Logs / CoreSimulator

Mỗi sự cố, có một thư mục con với một id duy nhất. Sắp xếp theo ngày, do đó sự cố gần đây của bạn là thư mục con đầu tiên. Trong đó, bắt đầu bằng cách nhìn vào stderr.log và system.log.

Cũng trực tiếp dưới CoreSimulator, xem CoreSimulator.log và Simulator.log.


135
2017-12-17 17:37



Chơi lô tô! bạn đã cứu cuộc đời tôi! - Raptor
Không có báo cáo sự cố nào của tôi trong trình mô phỏng iPhone hoặc iPad hiển thị trong thư mục này, có thể câu trả lời này cần được cập nhật? - Justin
Có lẽ nó cần một bản cập nhật, nhưng một cuộc bỏ phiếu xuống không phải là một cách rất lịch sự để khuyến khích nó. - ohhorob
Tôi đã tìm thấy báo cáo sự cố trong thư mục được đề cập, nhưng chỉ có một báo cáo và đó không phải là báo cáo gần đây nhất (tức là tôi tiếp tục thử một vài thứ trong ứng dụng và nó vẫn bị treo). Các sự cố là tất cả như nhau, vì vậy nó không phải là một vấn đề, nhưng tôi tự hỏi nếu điều này nói chung là trường hợp? - Samik R
Cả Justin và ohhorob đều đúng. Bạn cần khởi chạy ứng dụng trên trình mô phỏng KHÔNG Xcode và tạo lại sự cố để xem nhật ký trong ~/Library/Logs/DiagnosticReports/ - Dave Chambers


Tôi khá chắc chắn rằng bạn có thể thấy điều này trong ứng dụng OS X Console nằm trong Tiện ích. Nếu tôi là sai, mặc dù chắc chắn để bỏ phiếu cho tôi heck xuống vì vậy tôi xóa này.


CẬP NHẬT:

Cụ thể (như OSX 10.11.6),

Khi một ứng dụng gặp sự cố trên trình giả lập, một thư mục con (có id duy nhất) được thêm vào:

~ / Library / Logs / CoreSimulator

Trong đó, bắt đầu bằng cách kiểm tra stderr.log và system.log.

Khi trình giả lập chinh no sự cố, thư mục con được thêm vào:

~ / Library / Logs / DiagnosticReports

Đừng nhầm lẫn đường dẫn này với

/ Library / Logs

(thiếu xót ~ lúc bắt đầu), trong đó có các báo cáo khác nhau về mac của bạn.


15
2017-12-08 04:03



Vâng. Thông tin thêm tại đây developer.apple.com/iphone/library/documentation/Xcode/… - Brandon Bodnar
có vẻ như nó chỉ áp dụng cho các thiết bị iPhone, thay vì giả lập. Đúng nếu tôi đã sai lầm. - Raptor
Bàn điều khiển có thể được mở từ trình mô phỏng bằng cách nhấn Cmd- / hoặc sử dụng tùy chọn trình đơn Debug / Open System Log .... - lambmj


Đây là một cái gì đó mà làm việc cho tôi trong một trường hợp đặc biệt ... Ứng dụng của tôi đã bị rơi với SIGKILL khi nó chấm dứt. Tôi sẽ thấy ngoại lệ trong main.m cho một vài giây, và sau đó các ứng dụng sẽ kết thúc chấm dứt - do đó, không có cơ hội để có được dấu vết trở lại.

Tôi đã làm rất nhiều tìm kiếm trên "nơi mà giả lập lưu trữ các bản ghi lỗi của nó" và không bao giờ quản lý để tìm một câu trả lời. Tuy nhiên, mẹo sau đây khá tiện dụng và tôi có thể lấy nhật ký sự cố khi đang di chuyển:

Về cơ bản, mở /Applications/Utilities/CrashReporterPrefs.app và thay đổi cài đặt thành "Nhà phát triển". Điều này sẽ khiến CrashReporter hiển thị cửa sổ bật lên với nhật ký sự cố sau khi ứng dụng của bạn gặp sự cố.

Tôi đã tìm thấy điều này trong phần “Xem iOS Simulator Console và Bản ghi sự cố” trong tài liệu này từ Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application.html


3
2017-11-03 19:12



Nhân tiện, vấn đề ban đầu với SIGKILL mà tôi đã nghiên cứu hóa ra lại không phải là vấn đề: stackoverflow.com/questions/7901262/… - dana_a
Tôi nên chỉ ra rằng không có ứng dụng CrashReporterPrefs trong ứng dụng / tiện ích, tuy nhiên tôi đã tìm kiếm nó và có thể tìm thấy ứng dụng ở nơi khác. - Justin
@Justin bạn đã tìm thấy nó ở đâu? - Ohad Schneider


Điều này đáng tin cậy hơn nhiều. Chỉ trong một vài bước tôi đã có thể tìm thấy số dòng và tên phương thức:

  1. cd vào thư mục có tệp .app & .dSYM
  2. run /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
  3. đặt in asm-demangle
  4. đặt tên biểu tượng in trên
  5. p / a 0 × 00015c64 -> địa chỉ nhận bằng cách mở nhật ký sự cố trong ứng dụng "Console" hoặc chỉ cần nhấp đúp vào tệp .crash.

1
2017-12-09 22:33



Tôi không hoàn toàn hiểu tại sao bạn cần bản ghi sự cố. Khi ứng dụng trong trình mô phỏng gặp sự cố nhưng trước khi bạn ngừng gỡ lỗi, tại loại lời nhắc gdb "bt" cho "backtrace" - bạn sẽ nhận được chính xác những gì sẽ xuất hiện trong nhật ký sự cố. - Matthew Frederick
Phương pháp này hoạt động tốt cho các bản ghi sự cố từ điện thoại của khách hàng. - Gamma-Point


Bản ghi sự cố va chạm sẽ xuất hiện trong ~ / Library / Logs / CrashReporter.

  • Nếu chương trình giả lập iPhone bị lỗi (không phải ứng dụng iPhone chạy trong trình mô phỏng), thì sẽ có một mục nhập cho iPhoneSimulator.
  • Nếu ứng dụng iPhone trong trình mô phỏng bị lỗi, nhật ký sự cố sẽ xuất hiện với tên hiển thị của ứng dụng.

Khi Xcode nhận được nhật ký sự cố từ một thiết bị được kết nối, nó lưu trữ chúng trong các thư mục con của ~ / Library / Logs / CrashReporter / MobileDevice


1
2018-02-14 02:39



Điều này là hơn một năm sau đó nhưng tôi thấy "ứng dụng trong mô phỏng" treo tại ~ / Library / Logs / DiagnosticReports ... và nó trông giống như: MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash - Rob


Đối với tôi, đó là một biểu thức mà tôi đã thêm vào cửa sổ xem trình gỡ rối. Khi một breakpoint bị tấn công, biểu thức xấu đã làm cho XCode bị segfault.


0
2017-12-06 22:17