鱼C论坛

 找回密码
 立即注册
查看: 104|回复: 1

Windows DevC++ 编译出来的程序 RunTime Error 后都在干什么?

[复制链接]
发表于 2025-1-16 21:30:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
rt,在 Windows 电脑上尝试编译这段 C++ 代码:
#include <bits/stdc++.h>
using namespace std;

int main() { assert(0); }

编译指令为 -static -Wall -Wextra -O2 -Wl,--stack=998244353

我所期望的是运行立刻发生 Assertion Failed 然后程序在 0.1s 内立刻返回 3。

结果这东西足足在硬控了 8 秒左右程序才返回,而且在此期间 Ctrl+C 也不能终止程序。

会不会是 Windows 的错误收集程序在发颠?每一次工作都会遇到这个问题,随机出现,感觉很浪费时间。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-1-16 21:30:19 | 显示全部楼层
你的问题看起来很可能与 Windows 运行时错误处理和错误报告有关。大多数情况下,当程序遇到断言失败时,Windows 会尝试收集错误信息,这可能会导致你的程序在出现错误后变得响应缓慢。

遇到这种情况时,以下几个步骤可能会有所帮助:

  • 关闭Windows错误报告功能: 这将防止系统在程序崩溃时自动收集错误信息。可以通过调整系统设置来关闭,这样可以减少你遇到的延迟。
  • 使用调试器: 在调试模式下运行程序,直接在你的IDE中进行调试和错误排查,这样可以更快地定位问题而不用等待系统的错误报告。
  • 检查编译器设置: 有时编译时的某些优化选项可能会影响程序的行为,尝试修改编译选项,看看是否能改善问题。比如尝试移除 `-O2` 优化选项。
  • 简化程序: 在复杂的项目中,当出现无响应的情况时,尝试通过分割和简化代码来找出问题的根源。
    #include <cassert>
    using namespace std;
    
    int main() {
        assert(0);
        return 3;
    }


通过这些步骤,你可能可以找到分离和修复问题的方法。希望对你有所帮助!如果需要进一步信息,请回复我。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-5 13:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表