質問

iPhone OS 2.2.1用に作成されたプログラムをデバッグしていますが、3.0用にわずかに書き換える必要があります。 「舞台裏」など、行われているすべてのObjective-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