C++ SDK を Windows から Mac OSX 10.5 に移植しています。デバッグ中に設定した場合にのみ、特定のファイルのブレークポイントがヒットする Xcode に問題があります。デバッグを停止してから再開すると、ブレークポイントにヒットしなくなります。デバッグしていないときに追加すると、ヒットしません。これは特定のファイルにのみ発生し、ブレークポイントは常に濃い青色になります。つまり、ヒットするブレークポイントとヒットしないブレークポイントの違いがわかりません。
具体的には、私の SDK はさまざまな動的ライブラリで構成されています。これらは、OS とコンパイラのバージョン (Visual Studio の cl.exe や link.exe など) に応じて、さまざまなコンパイルおよびリンク実行可能ファイルを呼び出す Perforce jam を使用してビルドされます。これらの動的ライブラリにリンクし、それらのコードを呼び出す単純な (ユニット テスト) コマンド ライン アプリケーションがあります。この Windows 上のアプリケーションは Visual Studio プロジェクトであり、ライブラリ コードにブレークポイントを設定し、それらがヒットすることを期待しています。
Xcode 3.1.2 で同じ C++ コマンド ライン ユーティリティ アプリケーションを作成しました。これは、sdk dylib にリンクし、その中のコードを呼び出します。一部のブレークポイントは正常に機能します。問題のあるコードから呼び出されたコードにブレークポイントを設定し、問題のあるコードにステップ アウトして、問題なくステップ スルーできます。問題のあるコードは、正常に動作するコードと同じ dylib にコンパイルされます。また、インライン化の候補にならないほど長く複雑です。
私は次のことを試しました:
- [シンボルを遅延読み込み] をオフにします。
- gcc 4.0 と gcc 4.2 の両方でコンパイルします。
- 完全にクリーンアップしてシャットダウンします。
- xcodeproj パッケージのユーザー固有のファイルを削除します。
- システム ファイルと競合しないように、ファイルの名前を変更します。
- [ブレークポイント] ウィンドウからすべてをクリアします。
- 新しい Xcode プロジェクトを作成します。
私のアプリケーションはデバッグで DWARF 形式でコンパイルされており、私のライブラリは –g フラグ (–v、–arch i386、および –fvisibility-inlines-hidden と共に) を使用してビルドされています。
助けていただければ幸いです。ありがとう。
更新: これを更新できなくて申し訳ありません。私の Mac 移植プロジェクトは延期されました。これを解決したことはありませんが、実際にはコンストラクタ本体でのみ発生することがわかりました。再び問題にぶつかったときに、これを再検討します。