Xcode 3.2 を使用して 10.6 でビルドしている Mac OS X 10.5 用のプロジェクトがあります。デバッグ ビルドに GCC 4.2 を使用してブレークポイントにヒットすると、Xcode デバッガーはローカル変数情報を正常に表示します。LLVM GCC 4.2 または Clang LLVM を選択すると、ブレークポイントに到達したときにローカル シンボルが使用できず、自己またはその他のローカル シンボルを出力しようとすると、GDB は現在のコンテキストでシンボル「自己」がないと表示します。いずれの場合も、Generate debug infoオプションが設定されています。デバッグ構成が に設定され、10.5 SDK、アクティブなアーキテクチャのみをビルドするオプションが設定されています。GDB が起動すると、x86_64-apple-darwin として構成されていることがわかります。明らかな何かが欠けているに違いありません。LLVM コンパイラを使用しているときに GDB にローカル シンボルを表示させるにはどうすればよいですか?$(NATIVE_ARCH)
5 に答える
なじみのない人のために、 cdespinosa の答えをもう少し詳しく説明します。これは私にとってはうまくいき、投票しました。
- Xcode メニューから、[プロジェクト] > [プロジェクト設定の編集...] を選択します。
- [ビルド] タブを選択します
- 検索ボックスに「最適化レベル」と入力し、そのフィールドを選択して、[なし] を選択します。
- 次に「Debug Information Format」を検索し、そのフィールドを選択して、「DWARF」または「DWARF with dSYM」を選択します。
私が特権を持っていれば、これを彼の投稿へのコメントに入れていたでしょう。;)
これにはかなりの時間がかかりましたし、率直に言って Apple 側のずさんなところもありましたが、一般的には文句は言えません。
ドワーフ シンボルを使用し、最適化なしでビルドしていることを確認してください。llvm は新しいバックエンドであり、最適化されたコード生成のすべてがシンボル生成をデバッグするために接続されているわけではありません。
これは役立つかもしれません。プロジェクトのビルドオプションで「リンク時間最適化」をオフにしてみてください。これで、デバッグシンボルが見つからないという問題が修正されました。
実際、それは私がClangで抱えていたたくさんの奇妙な問題を修正しました。この機能はまだ使用するには最先端すぎると思います。
FSF の GDB はごく最近、JIT コードのサポートを追加しただけです。
Apple 提供の GDB がそれをサポートしているかどうかはわかりません (適切なスタック トレースを取得できますか?)。もしそうなら、このサポートは (明らかに) 不完全です。
私はこの問題を抱えていたので、メニュー項目の横にチェックを入れることで解決しました:「プロジェクト>アクティブなビルド構成の設定>デバッグ」。以前は、「リリース」オプションが選択されていました。それ以来、私のプロジェクトのデバッガーにローカルが表示されるようになりました。