我有一个脚本,它是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)
您似乎已经启用了"语义标签折叠"模式,该模式来自'contrib'区域中CEDET的bzr版本。"contrib"中的内容不是CEDET核心测试的一部分,所以我不能对它的行为充满信心。
首先,最好先禁用配置中与语义标签折叠模式相关的任何部分,看看它是否有帮助,如果没有,则禁用所有contib加载,这需要在.emacs文件中明确完成。