我已經使用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