6

最近、iOS アプリのクラッシュ ログをシンボリケートしようとして問題が発生しました。何らかの理由で、dSYM の UUID が Spotlight でインデックス化されませんでした。手動で検索し、コマンド ラインの呪文を十分に実行した後、クラッシュ ログの一部を象徴化することができました。

最初は dSYM が不完全であるか、そのようなものではないかと考えていましたが、メソッド呼び出しの欠落は C++ コードで発生しているものであることに気付きました。このプロジェクトは、C++ ライブラリを (Objective-C++ 経由で) 呼び出す Objective-C アプリです。 Objective-C コードにコールバックします (ここでも、Objective-C++ コードを介して)。私が見逃している呼び出しは、具体的には C++ の世界で発生するものです。

私の質問は、シンボリック化プロセスが C++ コードの関数呼び出しを解決できる方法はありますか? もしあれば、どの特別なオプションを設定する必要がありますか?

4

3 に答える 3

0

試す

dwarfdump --lookup=0xYOUR_ADDRESS YOUR_DSYM_FILE

各アドレスを手動で検索する (またはこれを行うスクリプトを作成する) 必要がありますが、シンボルに問題がなければ (dSym ファイルが 20MB よりも大きい場合)、これで問題ありません。

于 2012-10-18T18:02:47.563 に答える
0

私は Objective-C に精通していませんが、C++ コードがシンボルを使用してコンパイルされていることを確認します。特に、C++ コードをコンパイルするときに -rdynamic や -g を含めるようにしましたか?

于 2012-06-24T16:54:32.637 に答える
0

Apple SDK に付属している便利なプログラムの 1 つにatos(address to symbol) があります。基本的に、ここにあなたがしたいことがあります:

atos -o myExecutable -arch armv7 0x(address here)

そのアドレスのシンボルの名前を出力する必要があります。

于 2012-06-24T16:49:20.313 に答える