2017-08-05 2 views
1

Wie kann ich ein LEX/FLEX-Programm unter Linux debuggen? Der Code für die Erstellung und den Betrieb folgt:Wie man ein LEX/FLEX-Programm unter Linux debuggt

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

Hat der -d Token LEX/FLEX debuggen? Wenn ja, an welcher Zeile muss ich es in den Code für die Kompilierung aufnehmen?

Antwort

1

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.

+0

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