Sie verwenden -d
auf der Flex-Befehlszeile (wie lex -d example.l
- vorausgesetzt, Ihr Lex ist eigentlich flex, die es auf Linux ist). Dies aktiviert standardmäßig den Debug-Modus, der Informationen über jedes Token ausgibt, sobald es erkannt wird.
Sie können den Debug-Modus dynamisch innerhalb des Lexers ein- und ausschalten, indem Sie die globale Variable yy_flex_debug
ändern. Wenn Sie ihn auf Null setzen, wird der Debug-Druck deaktiviert und wenn er auf Null gesetzt wird, wird er wieder aktiviert.
Sie können auch den deubgging Code enthalten, auch wenn Sie nicht -d
mit -DFLEX_DEBUG
, den generierten C-Code verwenden Sie jedoch in diesem Fall durch Kompilieren yy_flex_debug
zu sein 0 ausfällt, so dass Sie es eingestellt benötigen, um auf nicht Nullen Sie irgendwo (in Ihrer Hauptfunktion? oder woanders), um das Debuggen zu ermöglichen - eine Befehlszeilenoption zu Ihrem Programm zu haben, die es setzt, ist ein guter Ansatz.
Es ist vielleicht auch erwähnenswert, dass durch 'flex' auch' # line'-Direktiven ausgegeben werden, um ein normales Source-Level-Debugging des Action-Codes zu ermöglichen, in dem eine '-g'-Option zu 'gcc' hilfreich wäre. Vermutlich weiß das OP das schon, aber die Frage ist etwas unklar, was _debugging_ in diesem Zusammenhang bedeutet. – doynax