在emacs中设置断点时隐藏源缓冲区

时间:2014-09-18 18:58:25

标签: c++ emacs gdb

我有一个脚本是gdb的包装器,它只是设置一些环境变量然后运行gdb。如果我尝试使用此脚本来调试emacs中的程序,每当我使用C-SPC设置断点时,到文件末尾的那一行就会从视图中消失。

脚本是

#/bin/sh
source env.sh
export VARIABLE_FOR_PROGRAM=false
gdb "$@"

env.sh有几行将目录添加到LD_LIBRARY_PATH

GDB由(gdb (concat "gdb.sh --annotate=3 --cd=" dir " --args " exe-dir "/path/to/my.exe " file))))启动file是传递给我正在运行的程序的命令行参数。

如果我用M-x gdb启动GDB并接受默认命令(gdb --annotate=3 my.exe),那么设置断点就可以正常工作。

该位置的

describe-text-properties提供此输出:

Text content at position 47591:


There are 2 overlays here:
 From 47196 to 48046
  semantic             [Show]
 From 47272 to 48046
  face                 nil
  isearch-open-invisible semantic-tag-folding-show-block
  semantic-decoration  t
  semantic-link-hook   nil
  semantic-secondary   t
  semantic-tag-folding t
  semantic-tag-folding-comment-overlay nil
  semantic-tag-folding-marker-string [Show]
  semantic-tag-folding-tag [Show]


There are text properties here:
  fontified            t

(point-max)是64141,因此叠加层似乎不应覆盖缓冲区的其余部分。

我有一个很长的,复杂的.emacs脚本,我还没有找到重现问题的最小设置脚本。鉴于上面的属性(并且isearch-open-invisible具有值引用语义),我怀疑该问题还涉及CEDET / Semantic。

CEDET和gdb之间是否存在已知的交互?

是否存在通过脚本而不是直接运行gdb的已知问题?

我似乎记得我创建了脚本,因为使用source env.sh; export VAR=false; gdb ...命令行运行GDB不起作用。

我正在使用emacs 23.4.1,g ++ 4.5.3和GNU gdb(GDB)Red Hat Enterprise Linux(7.0.1-32.el5)

1 个答案:

答案 0 :(得分:0)

您似乎已启用`semantic-tag-folding'模式,该模式来自'contrib'区域的CEDET的bzr版本。 'contrib'中的内容不是CEDET核心测试的一部分,所以我不能对它的行为充满信心。

作为第一个猜测,最好先禁用与语义标记折叠模式相关的配置的任何部分,以查看它是否有用,如果没有,则需要明确完成所有的contrib加载在.emacs文件中。