gpt4 book ai didi

c++ - Eclipse + wxWidgets + Boost——不显示异常

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:33 25 4
gpt4 key购买 nike

我一直在使用 wxWidgets2.8.12 和 boost::serialization 以及 mingw4.6 和 Eclipse CDT Juno,在 Windows 7 x64 下编写一个简单的 GUI 地址簿程序。

在使用 boost::archive::text_iarchive 和 text_oarchive 编写序列化条目到/从文件的功能时,我发现该程序将在启动时停止工作。它只会开始然后立即终止。 g++ 编译得很好,没有任何内容写入 stdout 或 stderr。在使用 gdb 进一步调查问题后,我发现确实存在 boost 库抛出的异常。

这本身不是问题。问题是这个异常从未显示在 Eclipse 的任何控制台中,所以我什至不知道它的存在,直到单步执行整个应用程序。异常本身很容易解决,但由于缺少输出而被证明是非常有问题的。在调试和发布配置中构建和运行应用程序时不显示任何内容。

我的问题本质上是这样的:为什么这些库异常没有被输出,我需要做什么来确保它们的正确显示?经过一段时间的搜索,我还没有找到任何有用的东西,当然,我们将不胜感激。预先感谢任何能够提供帮助的人。

最佳答案

好吧,你可以做一件事,尽管它需要在顶层有一个 catch block ,或者使用 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 并停止死...

关于c++ - Eclipse + wxWidgets + Boost——不显示异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307038/

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