C ++でリストの反復をデバッグしようとすると、問題が発生します。
簡単なテストアプリを作成しました。
int main(int argc, const char * argv[])
{
// insert code here...
std::cout << "Hello, World!\n";
std::list<int> list;
list.push_back(1);
list.push_back(2);
--> list.push_back(3); //Line before step over
for (std::list<int>::const_iterator i = list.begin(); i != list.end(); i++)
{
std::cout << *i << std::endl;
}
return 0;
}
デバッグ中、矢印でマークされた行にいるとき、ステップオーバーすると、c ++ファイルからコードにステップインし始めます:'list'。最終的にforステートメント内のコードに到達するまで、15回ほどステップオーバーする必要があります。
この問題はXcode4.4でのみ発生します。Xcode 4.3では、デバッグは完全に機能します。
ここに、異なる結果を伴ういくつかの異なるシナリオがあります。
- コンパイラとしてLLVMGCC4.2を使用します→問題なく動作します。
- Apple LLVMコンパイラ4.0を使用し、C++標準ライブラリにlibstdc++(GNU C ++標準ライブラリ)を設定します→問題なく動作します。
- AppleLLVMコンパイラ4.0およびC++標準ライブラリ用のlibc++(C++11をサポートするLLVMC++標準ライブラリ)の設定→問題が発生します。
私が取り組んでいるプロジェクトでは、AppleLLVMコンパイラ4.0とlibc++(C++11をサポートするLLVMC++標準ライブラリ)を使用しているため、シナリオ3)でこの問題を解決する必要があります。
何が起こっているのか、そしてそれに対する修正があるかどうか誰かが知っていますか?