Lex解析器:(缓冲区结束或NUL)段错误
Lex parser: (end of buffer or a NUL) segfault
我一直遇到分段错误问题,问题与lex解析器编写。因此,在构建我的程序时,我在Makefile中添加了调试开关-d。这是我从它得到的输出。
--accepting rule at line 180 ("bxz")
--accepting rule at line 61 (" ")
--accepting rule at line 180 ("e")
--accepting rule at line 68 ("
")
--accepting rule at line 180 ("0L")
--accepting rule at line 193 ("!")
--accepting rule at line 68 ("
")
--accepting rule at line 180 ("0x")
--accepting rule at line 193 (""")
--accepting rule at line 68 ("
")
--(end of buffer or a NUL)
Segmentation fault
当我通过调试工具运行此命令时,我发现在lex.yy. C:1324的yy_get_next_buffer()处发生了错误,该文件是由我手工编码的lex文件自动生成的C文件。如何解决这个问题?
(我将其标记为"不可复制",但它超时/老化。)在评论中已经有了答案。
@LokiAstari写道:
bug不太可能在lex代码中。因此,它听起来像你写的结束缓冲区或滥用内存不正确地以其他方式。Valgrind可以帮助查找内存错误
@AK写道:
尝试在最后一个令牌字符串后面放一个换行符。可能是您的解析器试图在最后一个符号之后找到一些终止字符。
@ChrisDodd写道:
你可能已经损坏了flex的内部缓冲区指针以某种方式,通过写掉一个数组的结束或类似的东西。如果您查看正在崩溃的lex代码,您可能能够在具有错误数据的数据结构上设置数据断点,并找出是谁在修改它
相关文章:
- 为什么PyImport_ImportModule python 3.7.2 中出现段错误?
- 为什么在访问 vtkRenderWindow 的"交互器"变量时会发生段错误?
- 全局向量导致 C++ 程序结束时出现段错误
- 为什么重载运算符<<打印特征类成员会导致段错误?
- 更改条件段错误
- 使用 TTF_RenderText() 加载字体时获取段错误 TTF_OpenFontRW()
- 注册对对象工厂的调用会导致段错误
- pthread_create在构造函数段错误中
- Nanoflann发现邻居提出段错误
- C++ 中的构造函数、继承、堆栈、堆、this-pointer 和段错误
- 具有unique_ptr的 CRTP 会导致段错误
- 增强纤维work_stealing屏障会导致段错误
- 当我返回指向结构的指针向量时出现段错误
- C++为什么我的代码没有爆炸/段错误?
- Pthread段错误,使用指向main中变量的指针
- C++ 模板中的段错误
- 相当于Windows/MSVC上的段错误?
- 为什么我的 LLVM JIT 实现出现段错误?
- 为什么访问我的引用捕获变量会导致我的 lambda 函数出现段错误?
- Lex解析器:(缓冲区结束或NUL)段错误