1
如何在Linux上调试LEX/FLEX程序?编译和运行代码如下:如何在Linux上调试LEX/FLEX程序
lex example.l
gcc lex.yy.c -lfl
./a.out
<Enter your input>
是否-d
令牌将调试LEX/FLEX?如果是的话,我需要将它包含在编译代码中?
如何在Linux上调试LEX/FLEX程序?编译和运行代码如下:如何在Linux上调试LEX/FLEX程序
lex example.l
gcc lex.yy.c -lfl
./a.out
<Enter your input>
是否-d
令牌将调试LEX/FLEX?如果是的话,我需要将它包含在编译代码中?
在flex命令行上使用-d
(如lex -d example.l
--假设您的lex实际上是flex,它位于Linux上)。这将默认启用调试模式,它会在识别每个令牌时打印出相关信息。
通过更改全局变量yy_flex_debug
(将其设置为零将调试打印关闭并将其设置为非零将其重新打开),可以在词法分析器中动态打开和关闭调试模式。
您还可以,即使你不通过编译与-DFLEX_DEBUG
生成的C代码中使用-d
,尽管在这种情况下yy_flex_debug
将被默认为0,所以你需要将其设置为无的deubgging码在某处(在你的主函数或其他地方)调零 - 以启用调试 - 为你的程序提供一个命令行选项,这是一个很好的方法。
也许值得注意的是,'flex'还会发出'#line'指令来允许对动作代码进行正常的源代码级调试,其中'gcc'的'-g'选项会有帮助。据推测,OP已经知道这一点,但这个问题有点不清楚,在这种情况下,_debugging_意味着什么。 – doynax