2014-09-18 54 views
1

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

剧本是

#/bin/sh 
source env.sh 
export VARIABLE_FOR_PROGRAM=false 
gdb "[email protected]" 

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 /语义。

CEDET和gdb之间有已知的交互吗?

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

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

我使用emacs 23.4.1,G ++ 4.5.3和GNU GDB(GDB)的红帽企业Linux(7.0.1-32.el5)

回答

0

看来已启用'语义标签 - 折叠“模式,它来自'contrib'区域中CEDET的bzr版本。 'contrib'中的内容不是CEDET核心测试的一部分,所以我不能对它的行为充满信心。

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