Cách đặt điểm dừng trong malloc_error_break để gỡ lỗi


126

Tôi đang nhận được rất nhiều kết quả đầu ra như thế này mà không bị lỗi ứng dụng:

malloc: * lỗi cho đối tượng 0xc6a3970: con trỏ được giải phóng không được phân bổ * đặt điểm dừng trong malloc_error_break để gỡ lỗi

Làm thế nào tôi có thể tìm ra đối tượng hoặc biến bị ảnh hưởng?

Tôi đã thử thiết lập một điểm dừng tượng trưng như thế này nhưng nó không bao giờ dừng lại:

nhập mô tả hình ảnh ở đây


1
Tôi giải quyết vấn đề này bằng cách vô hiệu hóa safari kiểm tra. stackoverflow.com/a/43885754/6521116
Kris Roofe

Một trong những nguyên nhân của điều này là một hàm / phương thức được cho là trả về một đối tượng và nó đạt đến cuối của hàm và không trả về bất cứ thứ gì.
Xofo

Câu trả lời:


136

Đặt điểm dừng trên malloc_error_break () bằng cách mở Bộ điều hướng Breakpoint (Xem-> Bộ điều hướng-> Hiển thị Bộ điều hướng Breakpoint hoặc ⌘7), nhấp vào nút dấu cộng ở góc dưới bên trái và chọn "Thêm Điểm dừng tượng trưng". Trong cửa sổ bật lên xuất hiện, nhập malloc_error_breakvào trường Biểu tượng, sau đó bấm Xong.

EDIT: openfrog đã thêm một ảnh chụp màn hình và chỉ ra rằng anh ấy đã thử các bước này mà không thành công sau khi tôi đăng câu trả lời của mình. Với chỉnh sửa đó, tôi không biết phải nói gì. Tôi đã không thấy rằng thất bại trong việc tự làm việc và thực sự tôi luôn giữ một điểm dừng trên bộ malloc_error_break.


2
Điều này làm việc cho tôi (không có mô-đun). Nguyên nhân của vấn đề đối với tôi là tôi đã được UIImagehỗ trợ bởi một tệp và tôi đã ghi đè lên tệp bằng một hình ảnh khác. Điều này gây ra lỗi khi tôi gọi UIImagePNGRepresentationtrên ảnh gốc (không phải khi tệp thực sự bị ghi đè).
Robert

Tôi không nhận được nút cộng ở góc dưới bên trái của ⌘7thanh ... Có lẽ ý bạn là ⌘8sao?
ScottyBlades

@ScottyBlades đoán lối tắt đã thay đổi. Tôi đã viết câu trả lời này 8 năm và 7 phiên bản Xcode chính trước đây ...
Andrew Madsen

@AndrewMadsen Không phải lo lắng, chỉ cần kiểm tra nếu nó có ý nghĩa để chỉnh sửa.
ScottyBlades

46

Trong ảnh chụp màn hình của bạn, bạn không chỉ định bất kỳ mô-đun nào: hãy thử đặt "libsystem_c.dylib"

nhập mô tả hình ảnh ở đây

Tôi đã làm điều đó và nó hoạt động: điểm dừng dừng ở đây (mặc dù stacktrace thường tăng từ một số hệ thống tối nghĩa lib ...)


7
Có vẻ như tên mô-đun là khác nhau trong iOS, đó là : libsystem_malloc.dylib. Breakpoint hoạt động với tôi mà không chỉ định một mô-đun.
Nestor

6

Tôi đã có cùng một vấn đề với Xcode. Tôi đã làm theo các bước bạn đã đưa ra và nó không hoạt động. Tôi trở nên điên loạn vì trong mọi diễn đàn tôi thấy, tất cả manh mối cho vấn đề này đều là do bạn đưa ra. Cuối cùng tôi đã thấy tôi đặt một khoảng trắng sau malloc_error_break, tôi đã chặn nó và bây giờ nó hoạt động. Một vấn đề ngớ ngẩn nhưng nếu giải pháp không hoạt động, hãy chắc chắn rằng bạn chưa đặt bất kỳ khoảng trống nào trước và sau malloc_error_break.

Hy vọng tin nhắn này sẽ giúp ..


4

Tôi đã cấp quyền mà tôi không nên viết trong một số thư mục (đặc biệt là / usr / bin /) và điều đó gây ra sự cố. Tôi đã sửa nó bằng cách mở Disk Utility và chạy 'Repair Disk Rights' trên đĩa Macintosh HD.


Cảm ơn, điều này đã cố định máy borked của tôi.
Matt Fletcher

2

Tôi giải quyết nó bằng thanh tra safari gần. Tham khảo bài viết của tôi . Thỉnh thoảng tôi cũng tìm thấy âm thanh khi chạy ứng dụng của mình để thử nghiệm, sau đó tôi mở safari với trình kiểm tra tự động, sau đó, tôi thực hiện một số hành động trong ứng dụng của mình thì vấn đề này đã được kích hoạt.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.