如何在Linux上调试LEX / FLEX程序

时间:2017-08-05 06:28:58

标签: c linux windows flex-lexer lex

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

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

-d令牌是否会调试LEX / FLEX?如果是,我需要在哪一行将其包含在编译代码中?

1 个答案:

答案 0 :(得分:3)

你在flex命令行上使用-d(如lex -d example.l - 假设你的lex实际上是flex,它在linux上)。这样可以默认启用调试模式,这将在识别时打印出有关每个令牌的信息。

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

即使你没有通过-d编译生成的C代码来使用-DFLEX_DEBUG,也可以包含deubgging代码,但在这种情况下,yy_flex_debug将默认为0,所以你需要在某个地方(在你的主函数中或其他地方)将它设置为非零以启用调试 - 为你的程序设置一个命令行选项,这是一个很好的方法。