4

拿这段代码:

#include <exception>

int main()
{
    throw std::exception();
    return 0;
}

当我在 Ubuntu Linux 中使用 gcc 编译和运行它时,我得到以下有用的输出:

terminate called after throwing an instance of 'std::exception'
what():  std::exception
Aborted (core dumped)

但是,当在 OS X Mountain Lion(同时使用 GCC 和 clang)上编译和运行时,我得到以下有用的输出:

libc++abi.dylib: terminate called throwing an exception

有没有办法让 OS X 默认在未处理的异常上打印 what() 的输出?

4

1 回答 1

0

对于它的价值,这在 OS X Mavericks 中对我有用:

$ echo '
> #include <stdexcept>
>
> int main()
> {
>     throw std::runtime_error("oh no");
>     return 0;
> }
> ' | g++ -x c++ - ; ./a.out
libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: oh no    
Abort trap: 6

所以我猜苹果刚刚开始为你解决这个问题。

编辑:另外,我不知道为什么我也没有测试你的例子,但这也有效:

来自 g++/clang:

libc++abi.dylib: terminating with uncaught exception of type std::exception: std::exception
Abort trap: 6
于 2014-01-22T05:31:27.607 回答