我正在Visual Studio 2019中为一个由CMake管理并使用mingw生成的项目调试CMake目标。
但是,当断言失败时,调试器简单地退出,而不给我一个调用堆栈,也不让我检查程序的当前状态。(正常断点确实会按预期挂起执行。)
对于
如何使Visual Studio在断言失败时中断执行?
您的项目中可能启用了NDEBUG标志,它可以在断言失败时阻止VS中断。
来自cppreference
如果在源代码中包含的位置将NDEBUG定义为宏名称,则assert不执行任何操作。
如果未定义NDEBUG,则assert检查其参数(必须具有标量类型)比较是否等于零。如果是这样,assert将在标准错误输出上输出特定于实现的诊断信息,并调用std::abort。诊断信息需要包括表达式的文本,以及标准宏文件,行和标准变量func(自C++11以来)的值。