0

iPhone開発を始めたばかりです。現時点では、既に構築されたアプリに存在するバグを修正しようとしています。メイン関数は次のようになります。

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

これは、私が理解していることからするとかなり典型的なようです。アプリ用に作成されたソース ファイルは、Objective-C のデリゲート/関数ポインターを使用して具体的に接続するメイン ループであると推測UIApplicationMainしています (注、私は C++ にかなり精通していますが、ほとんど知りません)。多くは iOS や Objective-C に関するものです)。

だから、私が知りたいのは、ソース ファイルをステップ実行して、このアプリで発生している計算バグを追跡する方法です。残念ながら、私が受け取ったのは に足を踏み入れたときの逆アセンブルだけでしたUIApplicationMain。私は asm の非常に基本的なことを知っていて、それを解釈することができます (ほとんどの場合) が、絶対に必要でない限り、特にデバッガーがAT&T 構文を出力しているようです (注: asm 構文を Intel に変更できる場合は、誰かがその方法を説明していただければ幸いです)。

ありがとう。

4

3 に答える 3

1

(実際の質問ではなく、NOTEへの回答)

xcode は gdb を使用するように設定できます (スキーム設定で):

.gdbinit (ホーム dir にあります) に追加するだけです:

「set disassembly-flavor intel」

lldbの場合、似たようなものがあるかもしれません

于 2012-07-16T22:09:18.637 に答える
1

iOS のメイン機能は、すべてのプロジェクトでほぼ同じです。ボールを転がすのに役立ちます。これは、特に Xcode でのクラッシュをデバッグするための優れたチュートリアルです。デバッグのチュートリアル

于 2012-07-16T21:09:23.037 に答える
1

左側のコードとプロジェクト エクスプローラーの間のグレーのスペースをクリックすると、すべての行にブレークポイントを配置できます。実行中にブレークポイントに遭遇すると、シミュレーターまたはデバイスは実行を停止し、コードが表示されます。次に、下部のデバッグ ウィンドウの左上に表示される下向き矢印ボタンを押して行ごとに移動し、必要に応じて asm を表示するか、次のブレークポイントまで実行される右向き矢印を押します。打つ。ブレークポイントを個別に削除するか、上部のブレークポイント ボタンを切り替えて、ブレークポイントを無効にすることができます。

于 2012-07-16T21:09:54.140 に答える