今天写学校OJ平台上的一道题,我遇到了让我无从debug的情况:我写完程序后编译运行,黑框框跳出来后我想输入数据,但是当我按着数字键时屏幕上却没有任何字符出现,自然程序也没有任何输出。我打算启动调试模式,我设置了断点以后,还是于事无补。程序运行到一个“点”就卡住了,点什么按键都不动,不能退出调试,也不能重新开始,只能关闭编辑器顺带关闭程序。实在没有头绪找bug,我只好把代码提交给OJ系统,OJ系统很快就报错了——输出超限。
我一时不理解这个词,经过一番查询,我知道可能是我的代码里的输出操作没有停止的边界导致的。我重新打开编辑器后再次运行程序,我发现这时输入又正常了!而且输入数据之后程序开始疯狂输出:
最后程序返回的是这样的数:
我终于彻底明白了“输出超限”含义。随后我分析到程序中涉及的输出操作的停止边界是一个需要及时更新的类内成员变量,而不幸的是它被我遗漏了。这下好了,问题解决了,增加了它的赋值代码后再运行,程序果然正常执行,提交到OJ系统上也通过了。
总结:
遇到程序不能正常输入或输出的情况,要检查程序设置的输入或输出的操作的边界是否正常。
遇到调试模式下程序卡崩的情况,很有可能是程序过度使用系统资源导致。