2010-05-06 28 views
5

Tôi đã viết macro gỡ lỗi in trên bảng điều khiển chuỗi được truyền vào bất cứ khi nào cờ toàn cầu kDebug == YES.Gọi macro mỗi lần gọi bất kỳ phương pháp nào - Mục tiêu C

Tôi cần in tên của phương thức và tên lớp của nó bất cứ khi nào có bất kỳ phương pháp nào được gọi.

Điều đó hoạt động tốt khi tôi cẩn thận xem qua mọi phương pháp và viết tên của lớp và phương thức trong chuỗi. Có bất kỳ trình xử lý đặc biệt nào được gọi khi bất kỳ phương thức nào trong Objective-C được gọi hay không, và nếu có, có cách nào tôi có thể ghi đè lên nó để gọi macro gỡ lỗi của tôi không? Không.

Toàn bộ mục đích của điều này là để tôi không phải đi qua mọi phương pháp trong mã của tôi và mã tay chữ ký phương thức trong cuộc gọi macro gỡ lỗi.

Trả lời

6

Nếu bạn đang tìm kiếm một phương tiện ghi nhật ký phương thức, thay vì xây dựng cơ sở dữ liệu của riêng bạn, một cơ sở thực sự được tích hợp vào thời gian chạy Objective-C.

Bạn có thể muốn đọc qua phần Objective-C của Apple Technote 2124: Technical Note TN2124: Mac OS X Debugging Magic

Tôi cũng sẽ khuyên bạn nên đọc qua bài blog Dave Dribin về việc sử dụng cơ sở của bộ thực thi để truy tìm các thông điệp. Bạn có thể tìm thấy ở đây: Tracing Objective-C messages - Dave Dribin's Blog. Dave ghi chú một hàm logObjCMessageSend được gọi, mà bạn có thể sử dụng để tùy chỉnh hành vi ghi nhật ký của mình. Đó là một chút khôn lanh để sử dụng, nhưng Dave cung cấp thông tin cần thiết để sử dụng thành công nó.

+0

bạn có thể giải thích với mã đơn giản? – Shamsiddin

4

Hãy xem Dtrace. Instruments cung cấp giao diện GUI. Bạn có thể, nói, cung cấp một regex để phù hợp với tất cả các phương pháp bạn muốn đăng nhập.

0

có vẻ như bạn đang tìm kiếm macro __PRETTY_FUNCTION__ ... nhưng câu trả lời được chấp nhận có lẽ là một cách tốt hơn để đi.

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