2017-08-05 18 views
1

如何在Linux上调试LEX/FLEX程序?编译和运行代码如下:如何在Linux上调试LEX/FLEX程序

lex example.l 
gcc lex.yy.c -lfl 
./a.out 
<Enter your input> 

是否-d令牌将调试LEX/FLEX?如果是的话,我需要将它包含在编译代码中?

回答

1

在flex命令行上使用-d(如lex -d example.l--假设您的lex实际上是flex,它位于Linux上)。这将默认启用调试模式,它会在识别每个令牌时打印出相关信息。

通过更改全局变量yy_flex_debug(将其设置为零将调试打印关闭并将其设置为非零将其重新打开),可以在词法分析器中动态打开和关闭调试模式。

您还可以,即使你不通过编译与-DFLEX_DEBUG生成的C代码中使用-d,尽管在这种情况下yy_flex_debug将被默认为0,所以你需要将其设置为无的deubgging码在某处(在你的主函数或其他地方)调零 - 以启用调试 - 为你的程序提供一个命令行选项,这是一个很好的方法。

+0

也许值得注意的是,'flex'还会发出'#line'指令来允许对动作代码进行正常的源代码级调试,其中'gcc'的'-g'选项会有帮助。据推测,OP已经知道这一点,但这个问题有点不清楚,在这种情况下,_debugging_意味着什么。 – doynax

相关问题