2012-10-15 19 views
9

私のアプリケーションは、ライブラリのソースコードを見ていない:私は図書館法の「定義へ移動」した場合外部ライブラリなしシンボル/ソース

  • を、Xcodeは.hファイルに私を取ります
  • チェックされて enter image description here
  • 「デバッグ時に表示解体」私は確信して作られていますが、
  • はデバッグするとき、私はソースコードを見ていないと、コールスタックのほとんどは、ライブラリーのために不足している何の.cpp対応が存在しないと言います

ライブラリをDEBUGとして構築し、ヘッダ+ .aファイルをSDKディレクトリにパッケージ化しました。だから、私はいずれかのSDKディレクトリにデバッグファイルをコピーするか、またはどこに見えるべきかをアプリケーションに伝える必要があると思います。どちらをやるかわからない。

私のアプリケーションプロジェクトでは、ライブラリプロジェクトへの参照は維持されず、.aファイルとヘッダディレクトリだけが参照されています。これは、ライブラリプロジェクトがCMakeによって作成されたため、私はそれを変更したくないからです。

+0

ライブラリあなたがデバッグしているマシンでコンパイルされたもの?ライブラリがデバッグ情報でコンパイルされたときと同じ場所にあるソースファイルですか?ライブラリをビルドするときにコンパイラに与えたデバッグフラグはありますか? –

+0

はい、 Macではなく独立して、私は.aとヘッダーのあるアプリケーションプロジェクトに伝えてください。ソース.cppファイルは移動されませんが、ヘッダーと.aファイルを移動してSDKを作成しました。そこには絶対的な道があるのだろうか? Xcodeはどこでどのようにそのような情報を保存しますか? –

+0

あなたはこれを解決しましたか?私はここで同様の質問があります:http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

答えて

8

まず、静的ライブラリの.debug_strセクションに、適切なデバッグ情報が含まれていることを確認する必要があります。

は、端末上でこのコマンドを実行してみてください:

xcrun dwarfdump /path/to/library.a | grep "\.m" 

あなたは、プリントアウトソース(.M)ファイルパスの束が表示されるはずです。理論的には、これはデバッガで停止するときにXcodeが表示される場所ですので、ここのパスが正しいことを確認してください。パスが表示されない場合は、適切なデバッグフラグを渡す必要があります(例:ライブラリを構築するときに-gをコンパイラに渡す必要があります)。

パスが何らかの形で間違っているか、 CMakeのビルドプロセスの一部として変更することができます。たとえば、プロジェクトディレクトリを基準にして変更することができます。「Make gcc put relative filenames in debug information」は、CMakeを使用してこれらのデバッグパスを調整します。

+0

C++アプリケーションですが、私は.cppの答え​​を.mに置き換えたと仮定しています。 –

+0

"\ .m"または "\ .cpp"で実行すると出力がまったく表示されません。それが正しいか再度確認できますか?私のデバッグlibは650Mbです.30Mbのリリース1と比べて、私はそれがデバッグとして構築されていると確信しています! –

+0

この質問の進捗状況はありますか?私はここで同様の問題に遭遇しています:http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

関連する問題