4

デバッグ中にXcodeで逆アセンブリビューをオフにする方法を理解しようとしています。すべてのアセンブリコードを確認するのではなく、コードをジャンプし続けたいと思います。以前のバージョンのXcodeにはデバッグメニューの下にこのオプションがあったと思いますが、Xcode 4.5(最新リリース)にはオプションがありません。何か案は?

編集:

私は自分が実際に自分のコードにいて、ライブラリにいないことを確認するために再確認しました。それでも、自分のコードにいるときはこれを行います。これが何が起こるかの写真です:

http://i1238.photobucket.com/albums/ff487/davidohyer/ScreenShot2012-10-02at35031PM.png

これは、新しいプロジェクトを作成し、ダミー関数を作成し、viewDidLoadからそのダミー関数を呼び出し、関数呼び出しにブレークポイントを設定し、F6を使用してステップスルーすることで発生しました。何か案は?外部ライブラリは使用されていません。これが発生すると、あなたが言及したオプションがオフになっていることを確認しました。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self initVals];
}

-(void)initVals
{
    self.img = [[UIImageView alloc] init];
}
4

1 に答える 1

3

製品>デバッグワークフロー>デバッグ中に逆アセンブリを表示

ここに画像の説明を入力してください

自分のコードしか表示できないことを忘れないでください。一部のライブラリまたはフレームワーク内で発生するブレークポイントやクラッシュは、表示するソースコードが非常に多いため、アセンブリのみを表示します。

編集

編集で表示している逆アセンブリはからUIViewControllerです。サイドバー、および逆アセンブリのシンボルスタブコメントで確認できます。

自分のコードを壊すかもしれませんが、ここから一歩踏み出すと、致命的にいくつかのフレームワークコードで終わります。

あなたの例では、サブクラスinitValsからの呼び出しを中断します。viewDidLoadUIViewController

この最後をステップパスすると、UIViewControllerコードで終了します。これは、後もまだやるべきことがたくさんあるためですviewDidLoad

したがって、再開するには、サイドバーのシンボル名に注意してください。ここでは、サブクラスではなく、スーパークラスのメソッド実装にいることを示しています。したがって、アセンブリのみが出力されます。

編集2

ライブラリ(バイナリのみ)からの次のコードを想像してみてください。

@interface Foo: NSObject

- ( void )test1;
- ( void )test2;
- ( void )test3;

@end

そして、それをサブクラス化します。

@interface Bar: Foo

@end

さて、Foo次のことを行います。

- ( void )test1
{
    [ self test2 ];
    [ self test3 ];
}

サブクラスで、オーバーライドするだけだとしましょうtest2

- ( void )test2
{
    ...

    /* Breakpoint here, at the end */
}

ブレークポイントからステップすると、fromの直後に呼び出されるスーパークラスの実装で終了しtest3ます。test2test1

したがって、独自のコードからスーパークラスの実装にジャンプするだけです。ここでも、人間が読める形式のコードは表示されませんが、アセンブリのみが表示されます。

于 2012-10-02T20:53:10.393 に答える