为什么 g++ 会产生巨大的错误日志
Why does g++ generate huge error log?
我在某处看到这个格式错误的C++程序可以使g ++生成一个巨大的错误日志:
int main()
{
struct x struct z<x(x(x(x(x(x(x(y,x(y><y*,x(y*w>v<y*,w,x{};
return 0;
}
通过多次重复(x
,错误日志可能会增长到>1GB。因此,该程序可用于耗尽受害者的系统资源。虽然这个问题可以通过--fmax-error
来解决,但我很好奇 g++ 在编译过程中发生了什么,让它吐出这样的日志。
我无法真正回答发生了什么特定的事情,以至于错误数不胜数,但请记住,C++可能有人类已知的最复杂的语法。
编译器的部分工作是通知用户特定输入出了什么问题,它无效(或者在警告的情况下,是好的)C++。
当您递归具有歧义时,您可能会获得错误消息的指数增长,因为编译器会通知您它可能意味着的一组内容。假设?
可以表示A
或B
,???
可以是AAA
、AAB
、ABA
、ABB
、BAA
、BAB
、BBA
或BBB
中的任何一个。
编译器只知道当你用--fmax-error
告诉它时,第 100000000 次近似重复对你来说并不重要。
相关文章:
- 如何修复输出日志中的"EnableInput can only be specified on a Pawn for its Controller"错误
- 尝试使用 EvtSetChannelConfigProperty() 函数更新最大事件日志文件大小时插入的错误值
- 使用cmake错误链接boost日志
- 我的游戏引擎的 spdlog 日志记录出现奇怪的"unresolved external symbol"错误
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 关于 ocilib 错误处理的问题,如何使用 ocilib 正确捕获日志错误?
- 提升日志链接错误(Cmake Mingw32)
- 我无法弄清楚我的程序的问题,即使我已经查看了错误日志消息
- 为什么 g++ 会产生巨大的错误日志
- 什么是log(info)和日志(错误)进行
- 如何使错误日志更详细地说明对的未定义引用
- Visual Studio 2012 中的错误日志不清楚
- GLSL编译失败,没有错误日志
- 尝试创建流的错误日志 - 获取"one or more multiply defined symbols found"
- 只要应用程序运行,是否可以接受保持错误日志打开状态
- 在 C++11 应用程序中进行错误日志记录的优雅方法
- 什么是用于限制错误日志记录的良好"backoff"算法?
- c++中的错误日志
- Boost日志错误日志
- sql server错误日志输出错误