2011-08-11 45 views
6

Tôi đang cố gắng tìm đến đáy của một ngoại lệ được ném do cuộc gọi phương thức trên một phiên bản AVAudioRecorder. Tôi đã thiết lập một điểm dừng ngoại lệ, nhưng tôi không thể thu thập bất kỳ thông tin hữu ích nào từ dấu vết ngăn xếp. Điểm mà tại đó các ngoại lệ được ném là trong một cuộc gọi đến:Gỡ lỗi ngoại lệ trong XCode 4

[recorder prepareToRecord];

Nếu tôi bật breakpoint tắt ứng dụng chạy tốt dường như không có bất kỳ tác động tiêu cực. Máy ghi âm hoạt động bình thường. Chỉ cần được rõ ràng, các chi tiết cụ thể của tình hình không phải là rất quan trọng. Nó là nhiều hơn một trường hợp của 'Tôi nên làm gì trong một tình huống như thế này để giải quyết vấn đề?' Tôi không thể thấy bất kỳ cách nào để tìm hiểu thêm về vấn đề với các công cụ trong tầm tay. Tài liệu trên ACBaseCodec dường như cũ và không làm sáng tỏ những gì có thể gây ra ngoại lệ.

Stack trace từ Debug Navigator:

Debug Navigator

Stack trace từ chủ đề cá nhân:

enter image description here

Có cách nào để biết những gì đã gây ra ngoại lệ này?

+0

Bạn có thể hiển thị một số mã không? Bạn đã kiểm tra các vấn đề quản lý bộ nhớ chưa? Bạn có nói điều này chỉ xảy ra khi bạn đặt điểm ngắt ngoại lệ? – jtbandes

+0

Tôi nghĩ bạn nên đăng một số mã, chúng tôi có thể trợ giúp tại "nguồn" –

Trả lời

1

Nếu chương trình không thành công khi trình gỡ lỗi đang hoạt động, có thể có điều kiện chủng tộc trong chuỗi. Ngoài ra, bạn có thể muốn thử đặt NSZombieEnabled thành true hoặc chạy chương trình trong Công cụ để xem có vấn đề gì về bộ nhớ đang gây ra sự cố hay không. Đối tượng máy ghi có được giữ lại không?

Tôi đã thấy một số trường hợp chương trình gặp sự cố không chạy trình gỡ lỗi, nhưng vẫn chạy bình thường khi trình gỡ lỗi hoạt động, nhưng tôi chưa bao giờ thấy tình huống như thế này.

Trình gỡ lỗi có đăng nhập bất kỳ tin nhắn nào không?

0

Chạy qua Công cụ. Có thể không có gì sai với nó. Nếu bạn không nhận được bất kỳ lỗi nào, bạn không nên lo lắng về nó.

9

Thật không may, tôi nghĩ AVAudioPlayer và AVAudioRecorder xuất hiện để sử dụng ngoại lệ C++ như là một phần của quy trình xử lý bình thường trong chuẩn bị .... Vì vậy, nếu bạn bật ngắt trên tất cả các ngoại lệ thì không có cách nào thực sự để tránh dừng ở đó. Bạn có thể cứ tiếp tục và vượt qua nó. Một cách giải quyết khác có thể là chỉ kích hoạt các ngoại lệ Objective-C khi nó xuất hiện để ném các ngoại lệ C++. Đó là những gì tôi đã làm. Xin lỗi nó không phải là một câu trả lời, tại sao họ đưa ra quyết định thiết kế cho preparTo ... là ngoài tôi.

+0

Cảm ơn bạn đã trả lời. Tôi đã từ lâu cố gắng đoán thứ hai các quyết định mà Apple đã đưa ra đối với SDK. Tôi có một nghi ngờ lén lút đó là tạo ra một hàng rào nhân tạo để tránh quá nhiều rác trên AppStore. Làm thế nào khác bạn có thể giải thích làm thế nào sâu sắc phá vỡ việc bàn giao libs tĩnh ngay cả trong Xcode 4.2? – Undistraction

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