2017-06-23 14 views
2

我有一个非常基本的C++程序: -XCODE产生分段故障,而不是例外

#include <iostream> 
#include <stdexcept> 
int main(int argc, const char * argv[]) 
{ 

    std::cout <<"Welcome .. "<<std::endl; 
    try { 
    throw std::runtime_error(std::string("Crazy exception")); 
    } 
    catch(std::exception& e) { 

    std::cerr << "error: " << e.what() << "\n"; 
    exit(0); 

    } return 0; 

} 

Whenver我跑,而不是例外,我看到一个Segmentation fault: 11 在调试这个程序,我看到EXC_BAD_ACCESS(code=EXC_I386_GPFLT)声明。 我在XCODE上启用了异常。有没有人见过这种基本错误?

这真是笑死我了,我应该重新安装XCODE?如果是,什么是清洁安装方式或从APP STORE的东西

重新安装XCODE直接。同样的问题!接下来是什么?重新安装我相信的整个OSX。有人可以提供一些线索,在休息之前我可以尝试什么“可以”尝试对机器进行无脑的重新格式化?

+0

的[如何捕捉genereal异常,并显示其得到的是什么()](可能的复制https://stackoverflow.com/questions/14631011/how-to- catch-a-genereal-exception-and-show-its-derived-what) - 它应该是catch(std :: exception const&e)'? –

+0

谢谢,但如果我忘了std ::关键字,它会创建一个编译错误。我的代码中有std ::关键字。我相应地更新了我的问题。 –

回答

1

是的,我执行我的Mac上这个节目,并成功地利用每一个类型的运行时错误的<stdexcept>编译。你正在运行哪个版本的Xcode?它是从Apple商店或其他网站安装的吗?

如果您已经从苹果商店安装它,请更新版本的Xcode,Xcode的8.3.3,并再次运行代码。

如果你正在使用它从其他网站,然后有一个机会,它有一个错误。我以前也遇到类似的问题。

还有就是从你的Mac计算机上卸载Xcode中的简单方法。将Finder中的Xcode拖放到应用程序中,并将其放入垃圾箱并清空垃圾箱。

+0

直接从APP STORE重新安装XCODE。同一问题 –

+0

您正在运行的是哪个版本的Xcode? –

+0

这是8.3.3 –

0

重新安装MAC OSX!它解决了这个问题。 令人惊讶的是,可能会导致一些操作系统损坏。

希望这会帮助别人在未来