2011-11-30 31 views
28

Trong quá khứ, với Xcode 3 cũ và tốt, mỗi lần tôi gặp sự cố, Xcode dừng lại ở dòng vi phạm hiển thị sự cố. Đó là thời điểm tốt, tốt đẹp để gỡ lỗi.Xcode luôn dừng ở main.m sau một sự cố

Bây giờ với Xcode 4.2, mỗi khi treo ứng dụng, nó dừng lại ở main.m tại dòng này

int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); 

cung cấp cho không có đầu mối với những gì đang gây ra tai nạn. Vấn đề có thể ở bất kỳ lớp nào nhưng nó sẽ luôn dừng trên main.m khi nó gặp sự cố.

có cách nào để hoạt động chính xác trở lại không?

nhờ

lưu ý: Tôi đã yêu cầu này trước khi về SO, nhưng giải pháp cho thời điểm đó đã được chứng minh là không thỏa đáng và vấn đề vẫn còn.

+0

Để tham khảo trong tương lai, không đăng cùng một câu hỏi một lần nữa. Chỉnh sửa câu hỏi ban đầu của bạn để cung cấp thông tin mới và đưa nó trở lại trang chủ. –

+0

Tôi đã yêu cầu xóa ảnh cũ. – SpaceDog

Trả lời

42

Họ đã thay đổi hành vi, hãy làm theo this tutorial to break on all exceptions

EDIT:(Link có thể bị thối rữa, vì vậy tôi sẽ lặp lại trong các thông tin ở đây)

Một trong những viên ngọc ẩn trong Xcode 4.2 là “ngoại lệ Breakpoint ”tính năng. Khi bạn bật tính năng này, cuộc sống gỡ lỗi của bạn trở nên dễ dàng hơn nhiều vì bất cứ khi nào ngoại lệ được ném vào ứng dụng của bạn, Xcode sẽ đưa ra dòng mã khiến cho ngoại lệ xảy ra. Điều này đặc biệt hữu ích nếu cửa sổ ngăn xếp cuộc gọi của bạn trống (đôi khi tôi thấy điều này xảy ra khi làm việc trên các ứng dụng iOS). Thay vì dựa vào thông báo lỗi ngắn gọn trong ngăn Đầu ra, không chứa nhiều hơn loại ngoại lệ và thông báo lỗi của nó, bạn sẽ thấy chính xác vị trí của vấn đề!

Bạn có thể thêm một Breakpoint ngoại lệ bằng cách mở cửa sổ Breakpoint Navigator, và nhấp vào nút X ở góc dưới bên trái:

Sau khi nhấp vào “Add Exception Breakpoint ...” mục trình đơn , bạn sẽ thấy điều này xem cấu hình breakpoint mở ra:

Nhấp vào nút Done và bạn sẽ các breakpoint ngoại lệ mới trong danh sách bạn của b reakpoints. Nếu bạn muốn có tất cả các không gian làm việc Xcode của bạn bao gồm các ngoại lệ breakpoint, nhấp chuột phải (Ctrl + click) vào nó và mở “Di chuyển Breakpoint Để” mục trình đơn:

Sau khi nhấp vào “tài khoản” trong menu phụ, bạn sẽ thấy rằng điểm ngắt ngoại lệ nằm trong nhóm người dùng của các điểm ngắt. Mở một dự án khác và nó sẽ tự động được đưa vào danh sách các điểm ngắt.

Gỡ lỗi hạnh phúc!

+13

Cảm ơn. Họ phải điên khùng. Whats điểm của sự thay đổi đó là gì? Làm cho cuộc sống của các nhà phát triển trở nên khốn khổ? cảm ơn!!!!!!!!!!!!!!!! – SpaceDog

+0

bất kỳ cách nào để đặt cài đặt này là vĩnh viễn trên xcode? – SpaceDog

+0

bit ở cuối hướng dẫn về việc di chuyển nó sang "Người dùng" làm cho nó vĩnh viễn – BarrettJ

5

Chỉ cần thử các bước dưới đây có hiệu quả đối với tôi.

  1. Mở tùy chọn, chọn tab Hành vi.
  2. Chọn "Chạy thoát bất ngờ" từ cột bên trái.
  3. Chọn "Hiển thị trình gỡ lỗi với chế độ xem hiện tại".

Thật không may này được khôi phục trở lại main.m trong trình soạn thảo một lần nữa :) Bây giờ bạn cần phải làm theo các bước dưới đây

  1. Preferences Open, chọn tab Hành vi.
  2. Chỉ cần vào "chạy hoàn thành"
  3. Có tìm ra "Show" dòng và nhấp vào hộp kiểm
  4. Trên cùng một dòng thay đổi mục tiêu để đi đến "hiện tại" trong trình đơn thả xuống.

này nên làm việc

+1

wow. Tiếp theo phát hành Apple sẽ làm cho nó khó khăn hơn để cấu hình. Cảm ơn – SpaceDog

+0

Hahah! Họ vẫn có ** CHÍNH XÁC ** cùng lỗi. Nó chỉ không có ý nghĩa để nhảy vào một tập tin mà không cho bạn biết bất cứ điều gì. Nếu tôi bỏ chọn tất cả các ô, tôi giả sử (như Apple đã dạy tôi) rằng NOTING sẽ xảy ra. Thay vào đó, điều gì đó xảy ra. * "Nếu người dùng không muốn làm gì cho sự kiện này, hãy nhảy tới một tệp vô nghĩa vô nghĩa" * Rất tiếc. –

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