当我尝试在 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'。我必须跨过 15 次,直到它最终到达 for 语句中的代码。
这个问题只发生在 Xcode 4.4 中。在 Xcode 4.3 中,调试工作完美。
这里有一些不同的场景有不同的结果:
- 使用 LLVM GCC 4.2 作为编译器 → 它工作正常。
- 使用 Apple LLVM 编译器 4.0 并为 C++ 标准库设置 libstdc++(GNU C++ 标准库)→ 它工作正常。
- Apple LLVM 编译器 4.0 并为 C++ 标准库设置 libc++(支持 C++11 的 LLVM C++ 标准库)→ 出现问题。
在我正在进行的项目中,我们使用的是 Apple LLVM 编译器 4.0 和 libc++(支持 C++11 的 LLVM C++ 标准库),所以我需要为场景 3 解决这个问题)。
有谁知道会发生什么以及是否有解决办法?