8

実行時に特定のクラス メソッドの実装をコンソール画面に出力/ログ記録することは可能ですか? 私はログが組み立てられていると仮定していますが、それは私にとっては問題ありません。

4

1 に答える 1

5

行の先頭にブレークポイントを追加し、行ごとにステップ実行して、デバッガーで「逆アセンブル」を呼び出すことができます。

たとえば、私のコードの1行(個人情報を置き換えたもの)は次のようになります。

-(void) method
{
    __weak typeof(self) selfReference = self; // <-- This call was disassembled.
    ...

Project`-[Class method] + 32 at Class.m:176:
-> 0x9c5cc:  ldr    r1, [sp, #304]
0x9c5ce:  add    r0, sp, #296
0x9c5d0:  blx    0x33abec                  ; symbol stub for: objc_initWeak
0x9c5d4:  ldr    r1, [sp, #304]

編集

私はアセンブリにあまり慣れていないため、完全に機能していることを確認できませんが、デバッガー (私が使用している Clang) を使用して呼び出すことができます

disassemble -n methodName

これは、

指定された関数名の内容全体を逆アセンブルします。

注意:テストに使用していたメソッドの開始時にブレークポイントを使用してこれを行いました

問題のメソッドで停止するシンボリック ブレークポイントを作成してみてください。

ここに画像の説明を入力

于 2013-08-27T14:57:24.567 に答える