1

Xcode 4.3.3 を使用しており、シンボリック エンドポイントを設定したいと考えています。すべての objc_msgSend シンボルに対してシンボリック ブレークポイントを作成し、それを「デバッガ出力」と組み合わせたいと考えました。

SOのこの投稿のヒントに従いました。ただし、私のデバッガーではメッセージ

エラー: 'printf' は有効なコマンドではありません。

が表示されます。どんな手掛かり?すべての関数呼び出しについて、メッセージ [クラス メソッド] をデバッガ領域に出力したいと考えています。このような

[UIApplication sharedApplication]
[UIApplication _isClassic]
[NSCFString getCString:maxLength:encoding:]
[UIApplication class]
[SLSMoleculeAppDelegate isSubclassOfClass:]
[SLSMoleculeAppDelegate initialize]
4

1 に答える 1

4

ブレークポイント設定でデバッガーコマンドの前に「expr --」を付けると、lldb で動作します。

expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) )

ただし、デバッガーは各出力の後に「結果なし」を出力するため、解決策は完全ではありません。

[OS_xpc_dictionary, _xref_dispose]
<no result>
[NSObject, initialize]
<no result>
[OS_object, initialize]
<no result>

「結果なし」出力を抑制するものは何も見つかりませんでした。それは不可能かもしれません。この Open Radarを参照してください。

于 2012-10-02T18:11:22.733 に答える