28

Xcode 4を使い始めたばかりですが、プロジェクトでデバッグシンボルをどのように設定しても、Instrumentsは自分のコードに対応するスタックトレースアイテムのソース行を表示することを拒否します。は16進オフセットのみを表示し、実行可能ファイルを所有モジュールとして識別します。「ソースの場所」をオンにすると、空白も描画されます。これは、Xcodeによって生成されたスケルトンOpenGL ESプロジェクト([ファイル]→[新規]→[新規プロジェクト...]→[iOS]→[アプリケーション]→[OpenGL ESアプリケーション])でも発生します。

この問題はInstrumentsでのみ発生します(これまでにCPUとOpenGLのトレースを試しました)。Gdbはデバッグシンボルを問題なく取得します。

Instrumentsでスタックトレースのソースコードを表示するには、何か特別なことをする必要がありますか、それともXcode 4のバグですか?

これまでのところ、私は:

  • Debug Information FormatからDWARF with dSYM Fileに変更されましたDWARF
  • Strip Debug Symbols During CopyからYesに変更されましたNo
  • Instrumentsでのリリースビルドの代わりにデバッグビルドを使用するようにビルドスキームを変更しました。
4

8 に答える 8

49

他の答えは良い長期的な修正です。Spotlightがインデックスを再構築するのを待たずに、1つのInstrumentsセッションのシンボルを取得する必要がある場合は、Instrumentsに現在のセッションをシンボル化するように依頼できます。

  1. [ファイル]→[ドキュメントの再シンボル化]を選択します… 再象徴的なメニュー項目のスクリーンショット
  2. 表示されるリストでバイナリを見つけます。Springboardに表示されるのと同じ名前にする必要があります。バイナリを選択し、[検索]をクリックします。ここに画像の説明を入力してください
  3. Xcodeに戻ります。Controlキーを押しながら.appビルド製品をクリックし、[Finderに表示]を選択します。ファインダーアイテムに表示を示すメニューのスクリーンショットを右クリックします
  4. これにより、バイナリとそのdSYMファイルを含むディレクトリが表示されます。Instrumentsに戻り、このディレクトリに移動して、dSYMファイルを選択します。最も簡単な方法は、dSYMファイルをFinderからInstrumentsの[SelectdSYM]ダイアログに直接ドラッグすることです。
  5. 最後に、Instrumentsの「Symbolicate」をクリックします。これで、16進オフセットではなく、トレースにシンボルが表示されるはずです。
于 2012-01-02T15:44:29.597 に答える
45

私は今日この問題を抱えていて、次のように解決しました。

  1. スキームの編集
  2. 左側の「プロファイル」をクリックします(これは重要なステップです)
  3. ビルド構成をデバッグに変更

それはそれをする必要があります。何らかの理由で、ビルドターゲットがプロファイルターゲットと同じビルド構成に設定されていないことに注意してください。これにより、1、2時間以上トリップしました。

于 2011-09-08T22:00:28.663 に答える
3

リリース構成に対して、別のコード署名ID、つまりプロビジョニングプロファイルを選択してみてください。

于 2012-11-07T15:09:58.277 に答える
2

まったく同じ問題があったので、問題が何であるかを知りました。

答えは次のとおりです。Instrumentsを使用してiPhoneアプリケーションをプロファイリングするときにシンボル名が欠落している

  1. デバッグフラグを有効にしてコードをコンパイルしたことを確認してください(例-g3)。
  2. デバッグ情報にアクセスできるようにするバイナリ/ダイナミックライブラリで実行dsymutilします。

これにより、dSYMバンドルフォルダが生成され、Spotlightによってインデックスが作成されると、必要なデバッグ情報がInstrumentsで利用できるようになります。

あなたの場合、Spotlightがインデックスを作成するまでに少し時間がかかったと思います。インデックスが作成されると、魔法のようにうまくいきました。

于 2011-04-08T09:46:31.190 に答える
1

It just started working; no rhyme or reason.

I have spent the last half-hour trying to get it to fail again, in the hope of providing a more useful answer here, but I can't, even after recreating the skeleton OpenGL program from scratch, retracing all of my steps.

I did open the symbolicatecrash script in emacs (It has been implicated elsewhere, wrt this kind of problem), and it started working after I did this. But at no point did I change or save it.

It's a mystery.

于 2011-03-11T03:24:10.127 に答える
1

シンボルがない機器の理由の1つは、SpotlightがdSYMファイルを見つけられないことである可能性があります。したがって、からDWARF with dSYMへの変更DWARFはお勧めできません。dSYMファイルがないと、とにかくシンボルを取得できないため、元に戻す必要があります(少なくとも、Snow Leopardの場合はそうですが、dSYMファイルがない場合もシンボルを取得する人がいるという報告がありますが、すべての人がライオンを使用していた)。変更を加えた後、必ずクリーンビルドを作成してください(Xcodeが非クリーンビルド用にシステム上でdSYMファイルを生成できない場合があります)。

それでもシンボルが表示されない場合は、Spotlightデータベースに問題があります。ビルド後にdSYMファイルを含むフォルダーをフォルダーのリストに追加してみてください。Spotlightはインデックスを作成せず、そのリストから再度削除します。これにより、Spotlightはファイルのインデックスを再作成します。

これでも問題が解決しない場合は、Spotlightインデックスが完全に破損している可能性があります。その場合は、ターミナルで次のことを試してください。

sudo mdutil -i off /
sudo mdutil -E /
sudo mdutil -i on /

これにより、Spotlightは最初にメインハードドライブのインデックス作成を停止し、次に過去に収集されたすべてのインデックスデータを削除してから、インデックスの再作成を開始します。上記の行は、dSYMファイルがメインハードドライブにあることを前提としています(他のハードドライブやネットワークボリュームにはない場合は、「/」をそのボリュームの適切なマウントポイントに置き換える必要があります)。再試行する前に、Spotlightにインデックスを再作成する時間を与えてください。

于 2011-09-23T12:44:05.443 に答える
1

新しいバージョンのInstruments(私が持っている5.1.1 (55045))では、dSYMとソースコードを検索するためのパスを追加できます

Instrumentsの設定を開き、「dSYMsAndPaths」タブをクリックします。

設定タブ

次に、リストにパスを追加します。

リストに検索パスを追加します

于 2014-09-14T22:16:31.860 に答える
0

これが私の環境です...

  • XCode 8.2
  • Mac OS v10.12 Sierra

シミュレーターで同じ問題が発生しましたが、標準のgo-to修正がすべて機能していなかったため、問題が発生していました。

私にとってそれは、iPadをMacBookに接続し、接続されたiPadでそのアプリに対してインストルメントセッションを実行することでした。インストルメントは、iPadで実行しているときにアプリを適切に象徴し、iPadを切断して、後でシミュレーターでインストルメントを実行したときにも機能し続けました。

次のものを使用するようにプロジェクトを更新することと関係があると思います...

  • libsqlite3.dylibの代わりにlibsqlite3.tbd
  • libstdc++。dylibの代わりにlibstdc++。6.tbd

なぜそうなるのかはわかりませんが、Instrumentsでシンボルが失われる前に行ったプロジェクトの変更はこれだけでした。

于 2017-05-18T20:46:02.150 に答える