我已经使用Lemon Parser生成了解析器代码。我无法调试生成的代码。控件显示除当前执行的语句之外的其他一些源代码。断点被取代。我尝试了gdb和Visual C++。两者都有同样的问题。请告诉我调试它的方法。调试解析器生成的代码
-1
A
回答
0
如果您将它们构建为lib/dll,请检查优化,调试信息选项。
1
以下是经过认证的WAG(野驴猜猜):
我建议在看所有的宏的正在使用的解析器生成,看看是否有其中的任何逃脱换行符。如果有,请尝试删除它们(通过将这些行连接在一起),然后重新编译该文件。然后在调试器中查看代码 - 突然间可能会回到他们应该在的位置。
Backstory:早在80年代,我开发并销售了一款名为CDB的调试器。当我将它移植到名称为U * NX的任何事物中时,我都非常熟悉各种编译器的特性以及它们在特定情况下如何发出调试信息。
一个普遍存在的问题与已经逃脱换行的宏有关。例如。
#define foo(bar) bar + \
snort + something_else
x = foo(5);
y = 2;
如果y = 2;
应行号已经如图5所示,许多符号表将结束其显示为6,并在其后每线将是关闭的情况的一个。而且每一次使用这样的宏都会使行号越离越远。
2
比方说,你输入文件名为mylexer.y在这种情况下,柠檬会产生myparser.c和myparser.h
里面myparser.c你会看到线,如该
#line 1 "myparser.y"
的这些是line directives。它们适用于将语法错误追溯回用于生成代码的文件。它们不适合调试。
使用-l选项禁止它们调用Lemon。
lemon -l myparser.y
要查看文档中未提及的其他选项,请使用 - ?
lemon -?
相关问题
- 1. 什么解析器生成器可以生成Javascript代码?
- 2. 写代码来生成解析树
- 3. 调试生成图像的javascript代码
- 4. 生成解析器:didMatchInterior:回调
- 5. 编码的UI测试生成器无法生成代码
- 6. 调试生成器和迭代器
- 7. 解释器与代码生成器Xtext
- 8. Lexer /解析器从BNF文法生成Scala代码
- 9. 调试:使用生成的Java代码而不是Xtend代码
- 10. 有没有可以从调试器生成代码的工具?
- 11. 调试器StepInto自动生成的代码和JMC问题
- 12. 单元测试SQL代码生成器
- 13. 试图从Axis2生成的代码生成代码
- 14. OCaml的解析器代码
- 15. Octave的解析器代码?
- 16. 如何从代码调用生成器?
- 17. ANTLR生成的解析器产生MissingTokenException
- 18. Xcode 4调试器代码完成
- 19. 组合的解析器/解析器生成器
- 20. GWT生成的java代码的调试/查看源码
- 21. 目标C的解析器生成器?
- 22. SDK的代码生成器
- 23. 代码生成器的.Net
- 24. 如何设计生成Python代码的代码生成器
- 25. 创建解析器代码
- 26. Java源代码解析器
- 27. Nim代码解析器
- 28. ColdFusion代码解析器?
- 29. 清除野牛生成解析器的解析器状态
- 30. 无扫描器解析器生成器
你的意思是gdb?.. – ascanio
你是否用调试信息编译? – crashmstr
是的,我做了..我有一个包含主程序的文件。这是很好的调试。踏入和踩下以及断点都可以工作。代码进入解析器生成的代码的那一刻,控制(游标)将指向其他地方,执行将发生在其他地方。现在我正在用printfs进行调试。它非常乏味的工作。有时我把BP作为函数,然后我看到代码流的调用堆栈。 – Bharadwaj