gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:04 25 4
gpt4 key购买 nike

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

脚本是

#/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 的命令行运行 GDB;导出 VAR=false; gdb ... 没有工作。

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

最佳答案

您似乎已经启用了“语义标签折叠”模式,这是来自“贡献”区域中 CEDET 的 bzr 版本。 “contrib”中的内容不是 CEDET 核心测试的一部分,因此我不能自信地谈论它的行为。

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

关于c++ - 在 emacs 中设置断点时隐藏源缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25920379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com