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 - 断言失败没有提示?的主要内容,如果未能解决你的问题,请参考以下文章
C++ Visual Studio:调试断言失败!表达式:c >= -1 && c <= 255