2011-10-28 23 views
7

Tôi đang cố gắng tối ưu hóa mức sử dụng bộ nhớ của một ứng dụng iOS và tôi muốn biết tổng mức sử dụng bộ nhớ của ứng dụng là tại các điểm cụ thể trong mã. Tôi đã nghĩ rằng tôi sẽ có thể thiết lập breakpoint, hồ sơ ứng dụng với Activity Monitor, và chỉ cần nhìn vào việc sử dụng bộ nhớ khi mỗi breakpoint bắt. Nhưng khi tôi chạy các công cụ, có vẻ như các điểm ngắt không còn dừng thực hiện nữa, vì vậy thật khó để biết chính xác khi nào việc sử dụng bộ nhớ thay đổi.Có thể sử dụng các công cụ của XCode với các điểm ngắt được kích hoạt không?

Có thể sử dụng các điểm ngắt và dụng cụ cùng một lúc không? Nếu không, có một cách thông minh để viết một số mã để chèn một điểm đánh dấu vào các dòng thời gian cụ khi các sự kiện cụ thể xảy ra?

Trả lời

8

Tôi cũng đã gặp sự cố này ngày hôm nay và sau một chút tìm kiếm, tôi đã tìm thấy giải pháp này. Văn bản bên dưới là trích dẫn từ bài đăng:

Điểm ngắt không ngắt. Các công cụ sử dụng thông tin gỡ lỗi từ bản dựng gỡ lỗi của bạn, tuy nhiên, nó không dừng lại ở các điểm ngắt mà bạn đã đặt. Điều này là do trong khi bạn đang tải ứng dụng của mình vào Các công cụ từ menu trong XCode, Công cụ chỉ sử dụng đường dẫn của tệp thi hành hiện tại làm đường dẫn bắt đầu và tải nó bên ngoài từ XCode. Menu trong XCode thực sự là cơ chế tiện lợi. Đây không phải là vấn đề lớn vì bạn luôn có thể chạy lại ở chế độ Debug sau phiên công cụ của bạn nếu bạn muốn ứng dụng của mình để ngắt. Nó chỉ là một cái gì đó để ghi lại.

Tuyên bố NSLog không hiển thị trong bảng điều khiển trình gỡ lỗi. Nếu bạn muốn xem các câu lệnh NSLog của mình, bạn sẽ cần tải ứng dụng Console (/ Applications/Utilities/Console).

Tham khảo: http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/

0

Vâng, bạn không chạy dưới sự kiểm soát của trình gỡ lỗi.

Một cách tiếp cận có thể là thêm cảnh báo tại các điểm chính và lấy một heapshot sau đó (thủ công).

Hoặc có thể có một số thuật sĩ dtrace.

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