Frage

Ich bin das Debuggen ein Programm, das für iPhone OS 2.2.1 geschrieben wurde und muss etwas für 3.0 neu geschrieben werden. eine Liste aller Objective-C-Nachricht Anrufe hat, die gemacht werden, darunter „hinter den Kulissen“ Anrufe, würde sehr nützlich sein.

Ich fand NSObjCMessageLoggingEnabled auf einer Website, aber ich bin nicht sicher, ob es mit dem iPhone funktioniert. Weiß jemand, ob / wie das funktioniert, und wenn nicht, ob es eine andere Art und Weise ist, könnte ich das gleiche erreichen?

Danke!

War es hilfreich?

Lösung

ich endlich ein heraus eine relativ einfache (wenn auch nicht bei allen elegant) Weg, dies zu tun.

auf dem iPhone während des Debuggens, habe ich einen Haltepunkt für objc_msgSend auf. Ich habe dann in diesem einfachen GDB Skript eingegeben:

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

Dies druckt jeden Methodenaufruf aus. Es ist nicht perfekt, weil es die Klassennamen des Objekts druckt die Nachricht gesendet wird, und nicht das Objekt selbst, aber es funktioniert für das, was ich brauchte.

Hinweis: Dies ist nur auf dem iPhone funktioniert selbst.

Andere Tipps

NSObjCMessageLoggingEnabled (und sein Zwilling instrumentObjcMessageSends(BOOL)) sind im Simulator zur Verfügung, aber nicht auf dem Gerät.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top