如何在Linux上调试LEX / FLEX程序?编译和运行的代码如下:
lex example.l
gcc lex.yy.c -lfl
./a.out
<Enter your input>
-d
令牌是否会调试LEX / FLEX?如果是,我需要在哪一行将其包含在编译代码中?
答案 0 :(得分:3)
你在flex命令行上使用-d
(如lex -d example.l
- 假设你的lex实际上是flex,它在linux上)。这样可以默认启用调试模式,这将在识别时打印出有关每个令牌的信息。
您可以通过更改全局变量yy_flex_debug
在词法分析器中动态打开和关闭调试模式 - 将其设置为零会关闭调试打印并将其设置为非零会将其重新打开。
即使你没有通过-d
编译生成的C代码来使用-DFLEX_DEBUG
,也可以包含deubgging代码,但在这种情况下,yy_flex_debug
将默认为0,所以你需要在某个地方(在你的主函数中或其他地方)将它设置为非零以启用调试 - 为你的程序设置一个命令行选项,这是一个很好的方法。