Mac OS Xでかなり大きなC++プロジェクトをg ++ 4.0に移植しようとしています。プロジェクトはエラーなしでコンパイルされますが、GDBを正しく動作させることができません。 GDBのコマンドラインに「bt」と入力してスタックを見ると、表示されるすべてのファイル名と行番号が間違っています。GCCデバッガのスタックトレースに間違ったファイル名と行番号が表示される
たとえば、GDBスタックトレースによれば、私のmain()
関数はMac OS X SDKのstdexceptにあると考えられていますが、これは意味をなさないものです。
GDBが誤動作する原因は何ですか?私は既に#lineと#fileのステートメントを自分のコードでチェックし、コードにはunixの行末しかないことを確認しました。私はまた、プロジェクトをきれいにして再構築しました。私はHello Worldプロジェクトのデバッグも試みましたが、同じ問題はなかったと思います。
問題は、私がリンクしているサードパーティのライブラリの1つと関連していますか、それらのコンパイル方法ですか?それとも全く違うものなのでしょうか?
Xcodeによって実行されるgcc
とld
への2つのコール例があります。 AFAIK私のプロジェクト内のすべてのcppファイルがコンパイルされ、同じパラメータでリンクされます。
/Developer/usr/bin/gcc-4.0 -x C++ -arch I386 -fmessage長= 0 -pipe -Wno-トリグラフ-fpascal-ストリング-fasmブロック-O0 -fpermissive -Wreturn-タイプ-Wunused-variable -DNO_BASS_SOUND -D_DEBUG -DXCODE -D__WXMAC__ -isysroot /Developer/SDKs/MacOSX10.5.sdk -mfix-and-continue -fvisibility-inlines-hidden -mmacosx-version-min = 10.4 -gdwarf-2 -D_FILE_OFFSET_BITS = 64 -D_LARGE_FILES -D__WXDEBUG__ -D__WXMAC__ -c "/ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/ TSDLGameBase.cpp" -o「/ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/ビルド/ Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/TSDLGame Base.o "
/Developer/usr/bin/g++-4.0 -arch i386の -isysroot /Developer/SDKs/MacOSX10.5.sdk " -L /ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/ビルド/ Debug " -L/Developer/SDKs/MacOSX10.5.sdk/usr/local/lib -L/opt/local/lib" -F/Users/adriangrigore/Documents/Gemsweeper Mac /ビルド/デバッグ " -F /ユーザ/ adriangrigore /ライブラリ/フレームワーク -F /開発/ SDKに/ MacOSX10.5.sdk /ライブラリ/ -filelistを「フレームワーク/ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/ビルド/ Gemsweeper Mac.build/デバッグ/ Gemsweeper Mac.build/Objects-normal/I386/Gemsweeper Mac.LinkFileList」 -mmacosxバージョン分= 10.4 /opt/local/lib/libboost_program_options-mt.a /opt/local/lib/libboost_filesystem-mt.a は/ opt/local/libの/libboost_serialization-mt.a /opt/local/lib/libboost_system-mt.a /opt/local/lib/libboost_thread-mt.a 「/ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/サードパーティ /FreeImage 「 "/ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/サードパーティ /cpuinfoの-1.0/ -Lは/ usr/local/libの" libcpuinfo.a -framework IOKitの-frameworkカーボン-frameworkココア/Dist/libfreeimage.a -frameworkシステム-framework QuickTime -framework OpenGL -framework AGL -lwx_macd_r ichtext-2.8 -lwx_macd_aui-2.8 -lwx_macd_xrc-2.8 -lwx_macd_qa-2.8 -lwx_macd_html-2.8 -lwx_macd_adv-2.8 -lwx_macd_core-2.8 -lwx_base_carbond_xml-2.8 -lwx_base_carbond_net-2.8 -lwx_base_carbond-28 -framework SDL -frameworkココア-o "/ユーザ/ adriangrigore /ドキュメント/ Gemsweeper マック/ビルド/デバッグ/ Gemsweeper Mac.app/Contents/MacOS/Gemsweeperマック"
は私が既に持っていることに注意してくださいXcodeデバッガhereに関する同様の質問がありましたが、実際にはXcodeの障害ではなく、GCC/ld/GDBの問題であることがわかったので、私は再ポストしています。
編集:SDL、Boost、wxWidgets:私のプロジェクトでは、以下のサードパーティのライブラリを使用しています。これがこの問題のために重要かどうかはわかりませんが、そうである場合に備えて言及したかっただけです。
私はXcode SDLプロジェクトテンプレートをコンパイルしようとしましたが、同じ問題は発生しませんでした。そのため、私のプロジェクトでは特別なことが必要です。
第2の編集:これまで知っていたとおり、「これは自動的に生成された」という文字列でファイルを検索している間に間違いを犯しました。私は同じ文字列を持つ数十のファイルを見つけました。これらのファイルはすべて私が使用しているサードパーティのライブラリの1つであるFreeImageに属しています。だから、この問題はFreeImageに関連しているようですが、どうやって進めていくかまだ分かりません。
起動時にgdbは警告を出力しません。 – epatel
私はあなたが何かを上書きする可能性のある、ポインタベースのバグを持っていると思っています... – epatel
gdbは起動時に何の警告も出さない。 –