提问者:小点点

Visual Studio不会在断言冲突时中断


我正在Visual Studio 2019中为一个由CMake管理并使用mingw生成的项目调试CMake目标。

但是,当断言失败时,调试器简单地退出,而不给我一个调用堆栈,也不让我检查程序的当前状态。(正常断点确实会按预期挂起执行。)

对于中的所有C++异常,在抛出时已启用Break;Windows(&>;异常设置/code>,但无济于事。

如何使Visual Studio在断言失败时中断执行?


共1个答案

匿名用户

您的项目中可能启用了NDEBUG标志,它可以在断言失败时阻止VS中断。

来自cppreference

如果在源代码中包含的位置将NDEBUG定义为宏名称,则assert不执行任何操作。

如果未定义NDEBUG,则assert检查其参数(必须具有标量类型)比较是否等于零。如果是这样,assert将在标准错误输出上输出特定于实现的诊断信息,并调用std::abort。诊断信息需要包括表达式的文本,以及标准宏文件,行和标准变量func(自C++11以来)的值。