Eclipse + wxWidgets + Boost - 未显示异常

时间:2013-01-13 19:04:03

标签: c++ mingw wxwidgets eclipse-cdt boost-serialization

我在Windows 7 x64下使用wxWidgets2.8.12和boost :: serialization与mingw4.6和Eclipse CDT Juno编写了一个简单的GUI通讯录程序。

在编码使用boost :: archive :: text_iarchive和text_oarchive将条目序列化到文件/从文件序列化的功能时,我发现该程序在启动时将停止工作。它会简单地开始然后立即终止。 g ++编译得很好,没有写入stdout或stderr。在使用gdb进一步研究这个问题后,我发现升级库确实存在异常。

这本身并不是问题。问题是这个异常从未在Eclipse的任何控制台中显示,所以我甚至不知道它存在直到整个应用程序。异常本身解决起来相当简单,但由于缺乏输出而已经证明是非常有问题的。在Debug和Release配置中构建和运行应用程序时,不会显示任何内容。

我的问题,实质上是这样的:为什么这些库异常没有输出,我需要做些什么才能确保正确显示?经过一段时间的搜索后,我还没有找到任何有用的东西,任何帮助当然都会受到赞赏。提前感谢能够提供帮助的任何人。

1 个答案:

答案 0 :(得分:1)

你可以做的一件事,虽然它需要顶层的捕获块或使用set_unexpected()如下所示。

#include <boost/exception/diagnostic_information.hpp>

...

catch(...)
{
    std::cerr << "Unhandled exception!" << std::endl <<
    boost::current_exception_diagnostic_information();
    return 1; //or whatever...
}

你可以在激烈的catch(...)之前过滤掉boost / std例外但是你明白了。

编辑:

您可能看不到异常的另一个原因是,在堆栈展开期间是否被调用(由于某种原因) - 然后它将调用terminate并停止...