2017-08-05 8 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

フレックスコマンドラインで-dを使用します(lex -d example.l - あなたのlexは実際にはフレックスで、それはLinux上にあるものとします)。これにより、デフォルトでデバッグモードが有効になり、各トークンが認識されたときの情報が表示されます。

グローバル変数yy_flex_debugを変更することで、レクサー内でデバッグモードを動的にオンまたはオフにすることができます。ゼロに設定すると、デバッグ印刷がオフになり、ゼロ以外に設定するとオンに戻ります。

この場合にはyy_flex_debugが0であることがデフォルトになりますけれども、あなたが非ためにそれを設定する必要がありますので、あなたは、-DFLEX_DEBUGで生成されたCコードをコンパイルして-dを使用していない場合には、またしてもdeubggingコードを含むことができ、デバッグを有効にするためにどこかで(あなたのメイン関数か他の場所で)ゼロにしてください - それを設定するプログラムへのコマンドラインオプションを設定することは良いアプローチです。

+0

また、 'flex'はアクションコードの通常のソースレベルデバッグを可能にする' #line'ディレクティブを出力します。ここで 'gcc'の' -g 'オプションが役立つでしょう。おそらくOPはすでにこれを知っていると思われますが、この文脈では何が意味するのか不明確です。 – doynax

関連する問題