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をデバッグしますでしょうか?はいの場合、コンパイルのコードにどの行を含める必要がありますか?
フレックスコマンドラインで-d
を使用します(lex -d example.l
- あなたのlexは実際にはフレックスで、それはLinux上にあるものとします)。これにより、デフォルトでデバッグモードが有効になり、各トークンが認識されたときの情報が表示されます。
グローバル変数yy_flex_debug
を変更することで、レクサー内でデバッグモードを動的にオンまたはオフにすることができます。ゼロに設定すると、デバッグ印刷がオフになり、ゼロ以外に設定するとオンに戻ります。
この場合にはyy_flex_debug
が0であることがデフォルトになりますけれども、あなたが非ためにそれを設定する必要がありますので、あなたは、-DFLEX_DEBUG
で生成されたCコードをコンパイルして-d
を使用していない場合には、またしてもdeubggingコードを含むことができ、デバッグを有効にするためにどこかで(あなたのメイン関数か他の場所で)ゼロにしてください - それを設定するプログラムへのコマンドラインオプションを設定することは良いアプローチです。
また、 'flex'はアクションコードの通常のソースレベルデバッグを可能にする' #line'ディレクティブを出力します。ここで 'gcc'の' -g 'オプションが役立つでしょう。おそらくOPはすでにこれを知っていると思われますが、この文脈では何が意味するのか不明確です。 – doynax