【发布时间】:2013-09-29 07:28:07
【问题描述】:
我正在使用 Eclipse gdb 调试 c++ 代码。当进入 yyparse() 时,实际上是通过 flex 和 bison 发生的
在“eqv_yacc.tab.c”中找不到源文件找到文件或编辑 包含其位置的源查找路径。
但是 thr 不再是文件 eqv__yacc.tab.c,只有 eqv_yacc.c。我的 makefile 中的名称已更改。如何解决此问题以指向 eqv_yacc.c 而不需要调试器来查找 eqv_yacc .tab.c?以前有人遇到过同样的问题吗?
Makefile code:
eqv_yacc.C:
eqv_yacc.y $(YACC) $(YFLAGS) eqv_yacc.y
sed s/yy/eqvyy/g eqv_yacc.tab.c > eqv_yacc.C
sed s/yy/eqvyy/g eqv_yacc.tab.h > eqvy.tab.H
$(RM) eqv_yacc.tab.h
$(RM) eqv_yacc.tab.c
【问题讨论】:
-
您在 Makefile 中重命名文件是否有原因?如果你使用例如
bison然后它有一个选项-o来命名输出文件(参见bisonmanual page),也许你可能想用它来代替。 -
你不使用 Eclipse 调试代码(它主要是一个编辑器,带有一些图形前端到诸如编译器、调试器等实用程序)。您使用
gdb调试代码。你应该展示你的Makefile规则构建eqv_yacc.c。请编辑您的问题以表明这一点。 -
嗨@BasileStarynkevitch 这是我在makefile 中找到的。makefile 是由其他人编写的。我不知道他们为什么更改名称并删除文件。 eqv_yacc.C: eqv_yacc.y $(YACC) $(YFLAGS) eqv_yacc.y sed s/yy/eqvyy/g eqv_yacc.tab.c > eqv_yacc.C sed s/yy/eqvyy/g eqv_yacc.tab.h > eqvy .tab.H $(RM) eqv_yacc.tab.h $(RM) eqv_yacc.tab.c