gpt4 book ai didi

Snow Leopard Xcode 中的 C++ 调试构建中断

转载 作者:可可西里 更新时间:2023-11-01 17:43:41 26 4
gpt4 key购买 nike

升级到 Xcode 3.2 和 Snow Leopard 后,我的调试版本在运行时出现故障并失败。 Stringstreams 似乎不起作用。它们在 Release模式下工作。

我已将其缩小为 GCC 4.2、OSX SDK 10.6 和 _GLIBCXX_DEBUG 预处理器符号的组合。这些是新 Xcode 项目的调试配置的默认值。

这段代码显示了问题:

#include <iostream>
#include <string>
#include <sstream>

int main (int argc, char * const argv[]) {

std::stringstream stream;
std::cout << " expected actual" << std::endl;
std::cout << "stream.bad: 0 " << stream.bad() << std::endl;
std::cout << "stream.fail: 0 " << stream.fail() << std::endl;
std::cout << "stream.eof: 0 " << stream.eof() << std::endl;
std::cout << "stream.good: 1 " << stream.good() << std::endl;

stream.exceptions(std::ios::badbit | std::ios::failbit | std::ios::eofbit);
try{
stream << 11; //< Does not work as expected (see output)
}catch (std::bad_cast &e) {
std::cout << "Unexpected bad_cast: " << e.what() << std::endl;
}catch(std::exception &e){
std::cout << "Unexpected exception: " << e.what() << std::endl;
}

std::cout << " expected actual" << std::endl;
std::cout << "stream.bad: 0 " << stream.bad() << std::endl;
std::cout << "stream.fail: 0 " << stream.fail() << std::endl;
std::cout << "stream.eof: 0 " << stream.eof() << std::endl;
std::cout << "stream.good: 1 " << stream.good() << std::endl;
std::cout << std::endl;
std::cout << "EXPECT: " << 11 << std::endl;
std::cout << "ACTUAL: " << stream.str() << std::endl;

std::cout << std::endl << "Done" << std::endl;
return 0;
}

字符串流插入应该可以工作,但是当使用 GCC 4.2 和 _GLIBCXX_DEBUG 时,“<<”运算符会抛出异常,并且会设置坏位和失败位。

我尝试了编译器和 SDK 的各种组合,结果如下: - 将 GCC 4.2、LLVM-GCC 或 CLANG 与 SDK 10.6 一起使用不起作用。 - 将 GCC 4.2、LLVM-GCC 或 CLANG 与 SDK 10.5 一起使用确实有效。 - 将 GCC 4.0 与 SDK 10.5 或 10.6 结合使用。

如果 _GLIBCXX_DEBUG 损坏或不受支持(使用 SDK 10.6 和 GCC 4.2),那么为什么这是新项目(C++ 命令行)中的默认调试配置?

最佳答案

此时 gcc 4.2 不支持 STL Debug模式。您可以在 STL Debug模式下使用 gcc 4.0,或者从调试配置中删除 Debug模式预处理器宏并继续使用 gcc 4.2。

关于Snow Leopard Xcode 中的 C++ 调试构建中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com