有啥方法可以避免 C++ 中的“调试断言失败”窗口?

Posted

技术标签:

【中文标题】有啥方法可以避免 C++ 中的“调试断言失败”窗口?【英文标题】:Is there any way to avoid "Debug Assertion Failed" Window in C++?有什么方法可以避免 C++ 中的“调试断言失败”窗口? 【发布时间】:2021-08-24 10:13:47 【问题描述】:

这是我希望在执行时不显示的窗口:

我知道这是一种不好的做法,但我目前正在编写一个收集所有这些异常并以不同方式显示它们的代码,它只需要自动执行“忽略”选项,因为代码是这样编程的在我收集完异常之后就可以处理了

【问题讨论】:

你可以在发布模式下编译。仍然会抛出异常,但会更难调试。 提示:您的问题不是 C++ 通用的,而是 Microsoft VisualC++ 特定的 我不是 visualC++ 专家,但通过谷歌搜索发现例如那:codeguru.com/visual-studio/write-debug-output-to-console-window 猜它可能会有所帮助 【参考方案1】:

应该能够

#define NDEBUG

应该抑制这一点。其次,尝试取消定义

_DEBUG

作为 Windows API 的一部分使用它。


也就是说,我不会这样做:断言确实是最后的手段,因此旨在帮助程序员。如果您想以不同的方式处理断言,请在断言发生之前“手动”处理导致该断言的情况。

参考:https://en.cppreference.com/w/cpp/error/assert

【讨论】:

是的。现在代码不会在那些地方死掉,并且执行会遵循一个现在未定义的新路径。我不确定这对于未完全调试的代码是否是一个好习惯。

以上是关于有啥方法可以避免 C++ 中的“调试断言失败”窗口?的主要内容,如果未能解决你的问题,请参考以下文章

c++错误:调试断言失败

使用 Opencv 时 C++ 调试断言失败

Visual C++ 查找导致“调试断言失败”的行

在没有进行任何代码更改的情况下突然出现错误“调试断言失败错误”。 (在 C++ 代码中)

调试断言失败

fortran调试断言失败怎么解决?