문제

iPhone OS 2.2.1 용으로 작성된 프로그램을 디버깅하고 있으며 3.0으로 약간 다시 작성해야합니다. "비하인드"호출을 포함하여 모든 대상 C 메시지 호출 목록을 갖는 것은 매우 유용합니다.

웹 사이트에서 nsobjcmessageLoggingEnabled를 발견했지만 iPhone에서 작동하는지 확실하지 않습니다. 누구든지 이것이 어떻게 작동하는지/그렇지 않다면 다른 방법이 있다면 같은 것을 성취 할 수 있습니까?

감사!

도움이 되었습니까?

해결책

나는 마침내이 작업을 수행하는 비교적 간단한 (전혀 우아하지는 않지만) 방법을 알아 냈습니다.

iPhone에서 디버깅하는 동안 OBJC_MSGSEND에 대한 중단 점을 설정했습니다. 그런 다음이 간단한 GDB 스크립트를 입력했습니다.

while 1
printf "[%s %s]", (char *)object_getClassName($r0), (char *) $r1 
c
end

이것은 각 방법 호출을 인쇄합니다. 메시지 자체가 아니라 메시지가 전송되는 객체의 클래스 이름을 인쇄하기 때문에 완벽하지는 않지만 필요한대로 작동하기 때문입니다.

이것은 iPhone 자체에서만 작동합니다.

다른 팁

NSObjCMessageLoggingEnabled (그리고 쌍둥이 instrumentObjcMessageSends(BOOL))는 시뮬레이터에서 사용할 수 있지만 장치에서는 사용할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top