16

私は、共通のコードベースを共有する一連の iOS アプリに取り組んでいます。共通コードベースをスタティック ライブラリとして開発しましたが、そのデバッグ シンボルをプライマリ アプリの .dSYM ファイルに含めたいと考えています。私の理解では、これは可能ですが、まだ機能していません。

スタティック ライブラリをターゲットとする独自のプロジェクト内の共通コードベース。このプロジェクトは、プライマリ アプリのプロジェクトにドラッグされます。プライマリ アプリのターゲットのビルド フェーズで、静的ライブラリをターゲットの依存関係として追加し、[ライブラリとバイナリをリンク] の下に追加しました。プロジェクトがビルドされ、必要に応じて実行されます。

ここで、メイン プロジェクトからアーカイブを生成すると、そのアーカイブを Finder で表示できます。アーカイブには、クラッシュ ログを象徴するために使用できる .dSYM ファイルが含まれています。ただし、.dSYM にはプライマリ アプリのシンボルのみが含まれ、静的ライブラリのシンボルは含まれません。これを過剰に確認するために、次を実行しました。

dwarfdump /path/to/app.dSYM

そして、出力には(ほとんど)静的ライブラリからのシンボルが含まれていませんでした。私が見つけた唯一の例外は、私のプライマリ プロジェクトの AppDelegate がスタティック ライブラリ内のオブジェクトのサブクラスであり、.dSYM 内にそのスーパー クラスのエントリがあることです。ただし、他のクラスは存在しません。

スタティック ライブラリのプロジェクトのターゲットのビルド設定で、次のように設定しました。

  • コピー中にデバッグ シンボルを取り除く: いいえ
  • ストリップリンク製品: いいえ
  • デバッグ シンボルの生成: はい
  • デフォルトで非表示のシンボル: いいえ

誰かが何らかのガイダンスを提供できれば、私はそれを大いに感謝します.

4

2 に答える 2

4

静的 lib シンボルアプリの dSYM ファイルに表示され、dwarfdump はそれを明らかにします。

 dwarfdump -a path/to/app.dSYM >dsymAsText.txt

libのシンボルが表示されます。

ただし、(最近のように) 静的ライブラリだけに合わせて生成されるシンボル テーブルを探している場合、それはかなり役に立たないという結論に達しました。新しいアプリにコンパイルされると、これらのシンボルとアドレスがすべて変更され、すべてに対してまったく異なるオフセットが得られます (間違っている場合は誰かが私を修正してください)。

その部分を回避する方法があるかどうかは完全にはわかりません。

于 2012-12-05T09:36:24.000 に答える
1

まだ答えが見つかったかどうかはわかりませんが、数日前にまったく同じ問題がありました。次のことを行うことで動作するようになりました。

  1. プライマリ プロジェクトと共通コード ベース (静的ライブラリ) を保持するワークスペースを作成します。プロジェクトが兄弟であり、親子ではないことを確認してください。
  2. ターゲットの依存関係を追加し、共通のコードベースをリンクします
  3. 共通のコードベースにデバッグ シンボルを含めるようにしてください
  4. 共有ディレクトリ内のすべてのプロジェクトをビルドするようにワークスペース設定を構成します (これが鍵だと思います)
  5. ヘッダーが見つからないという苦情が寄せられた場合は、ビルド設定でユーザー ヘッダーの検索パスを変更するか、ソース ツリー機能を使用する必要があります。
于 2012-09-10T14:01:11.153 に答える