Visual Studio 2017 - 断言失败没有提示?

Posted

技术标签:

【中文标题】Visual Studio 2017 - 断言失败没有提示?【英文标题】:Visual Studio 2017 - Assert Failure is not putting up prompt? 【发布时间】:2019-11-02 02:11:59 【问题描述】:

VS2017 在遇到assert() 失败时突然不显示 Abort, Ignore, Retry 提示。它所做的只是输出到output 窗口并退出程序,所以我无法调试它。

我进行了修复安装,没有改变任何东西。使用调试版本和库启用 JIT(本机代码)。它一直运行良好。

这是我得到的错误:

Press Retry to debug the application - JIT must be enabled)Assertion failed!
Program: C:\Test\x64\Debug\Test.exe  
File: C:\Test\Test\owner-draw-buttons.cpp  
Line: 144  
Expression: 0 

    For information on how your program can cause an assertion failure, see the 
Visual C++ documentation on asserts (Press Retry to debug the application - JIT 
must be enabled)Debug Error! Program: C:\Test\x64\Debug\Test.exe abort() has 
been called (Press Retry to debug the application) The thread 0x3524 has exited 
with code 3 (0x3). The program '[10772] Test.exe' has exited with code 3 (0x3).

关于如何解决的任何想法?

TIA!!

【问题讨论】:

欢迎来到 SO!请上传您遇到的错误并提供更多详细信息:您在做什么?你得到哪个确切的错误?你的设置是哪一个? (按重试调试应用程序 - 必须启用 JIT)断言失败!程序:C:\Test\x64\Debug\Test.exe 文件:C:\Test\Test\owner-draw-buttons.cpp 行:144 表达式:0 有关您的程序如何导致断言失败的信息,请参阅关于断言的 Visual C++ 文档(按重试调试应用程序 - 必须启用 JIT)调试错误!程序:C:\Test\x64\Debug\Test.exe abort() 已被调用(按重试调试应用程序)线程 0x3524 已退出代码 3 (0x3)。程序“[10772] Test.exe”已退出,代码为 3 (0x3)。 【参考方案1】:

对于JIT is enabled (native code),也许您在一个 C++ 项目中。我只能猜测它与Windows SDK版本和其中的ucrtbase.dll有关。

要解决这个问题:

1.请尝试将您的 VS2017 更新到最新的 15.9.17

2.更新你的windows操作系统到新版本(我的机器是1903),看这个similar issue(下载链接无效,建议你直接更新windows系统,不要单独安装sdk)。

之后,重新启动 PC 并使用 assert(false); 创建一个简单的 C++ 控制台项目,以检查现在对话框是否返回。希望对你有帮助:)

此外,作为临时解决方法,您可以尝试_CrtSetReportMode_CrtSetReportFile。见this。

【讨论】:

奇怪的是,如果在主模块上我使用 assert(0),它可以工作,但在其他模块中(在子类回调处理程序期间)却不行。有关示例输出,请参见上面的评论。 您好朋友,能否请您创建一个minimal code example 来帮助我们重现此问题,这对我们研究它会有很大帮助。

以上是关于Visual Studio 2017 - 断言失败没有提示?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2019 调试断言失败

C++ Visual Studio:调试断言失败!表达式:c >= -1 && c <= 255

Visual Studio 调试断言失败 [关闭]

Visual Studio 2017 Web 部署失败

Visual Studio 2017 - Git 因致命错误而失败

Visual Studio 2015 添加类添加现有项失败