gpt4 book ai didi

c++ - Release模式下的异常,而不是 Debug模式下的异常

转载 作者:行者123 更新时间:2023-11-28 07:36:42 25 4
gpt4 key购买 nike

当我在 Debug模式下运行这段代码时没有出现异常,但在 Release模式下我得到了这个异常:

Unhandled exception at 0x768b4b32 in RealTimeSLT.exe: Microsoft C++ exception: cv::Exception at memory location 0x003de734..

为什么这个问题只在发布时出现?我该如何解决??

FileStorage fs2(fileName, FileStorage::READ);
fs2.open(fileName, FileStorage::READ);
fs2["Mat"] >> Mat;
fs2["dMat"]>> dMat;
fs2.release();

最佳答案

假设您在 VS 中运行,选择 Debug->Exceptions 并单击“Break When Exception is Thrown”

在调试器下运行应用程序,看看为什么抛出异常以及它提示什么 - 这很可能是应用程序运行环境中的一些不同之处。

如果您需要检查变量,那么发布版本会使这变得困难,因为优化器可能会混淆调试器。您可以通过关闭发布版本中的优化来解决这个问题。但是,如果它是时间问题,这可能会隐藏问题。

另一种选择是捕获抛出的异常,然后记录其内部消息——这通常是一个名为“what()”或类似函数的函数。这很可能会指出实际问题。无论如何您都可能想要捕获此异常。

如果它的未定义行为导致 Release 和 Debug 之间的差异,那么它可能不会像上面那样有用。

关于c++ - Release模式下的异常,而不是 Debug模式下的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649357/

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