加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

emacs – CEDET可扩展性提示

发布时间:2020-12-16 09:32:11 所属栏目:安全 来源:网络整理
导读:我使用CEDET(最新的CVS)与几个中等大型项目(每个几百kLOC,大多数C,但有些C),有时会经历长时间的停顿,系统在几秒钟内完全无响应。更罕见的是,它完全失去控制,我必须在C-g上进行混合,并尝试移动光标或切换到不同的缓冲区以获得控制权。 我使用GNU Globa
我使用CEDET(最新的CVS)与几个中等大型项目(每个几百kLOC,大多数C,但有些C),有时会经历长时间的停顿,系统在几秒钟内完全无响应。更罕见的是,它完全失去控制,我必须在C-g上进行混合,并尝试移动光标或切换到不同的缓冲区以获得控制权。

我使用GNU Global为我所使用的项目创建标签,但这仍然有时很慢,特别是对于语义symref符号,以及一些似乎需要解析大量头文件和源文件的跳转。在某些情况下,语义ia-fast-jump错误与消息语义ia – fast-jump-helper:Tag SomeFunction没有缓冲区信息,即使gtags-find-tag立即找到它(在同一个项目中),尽管也许在过时的位置;这可能是一个临时的bug,通常语义ia-fast-jump是可靠的。

我会感谢任何关于如何的建议

油门CEDET不会失去所有的语义分析。
>了解什么导致CEDET失控,以便我可以修复我的项目定义或提交错误报告。
>确定为什么一些语义分析失败。
>获取语义来缓存更多信息,使其更加灵敏,我有很多内存,我想使用。
>管理GNU Global(创建和保持当前)多个项目在不同的地方,包括系统目录。
>管理使用ede-cpp-root-project配置的项目之间的依赖关系。
>管理具有多个构建配置的项目,每个具有自己的“config.h”和构建目录。

在文章http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html中有一些提示,我正在寻找超出那篇文章的任何东西。

解决方法

您正在使用的CEDET工具受到Emacs跟踪整个项目中每个符号的能力的限制。通过semanticdb-find-default-throttle节省CEDET / Semantic所做的一个好的起点。如果您知道项目的组织方式,您可以禁用某些类型的搜索来加快速度。

CEDET将解析它认为可能需要的大量文件,这也将填满内存。在这种情况下,您可以自定义semantic-idle-scheduler-max-buffer-size来禁用解析大文件,语义空闲工作解析邻近文件标志来禁用解析随机附近的内容,以及“语义空闲工作-update-headers-flag’来禁用解析头。请注意,最后2个默认值为nil,但由某些自动设置功能启用。

CEDET / Semantic将缓存内存中的大量数据,并建立排序搜索表以提高性能。如果您发现编辑头文件很多,这些编辑会导致缓存过期,并迫使它们重建。如果您退出并重新启动Emacs,那么强制语义重新载入大型数据库表。

另一种可能性是设置semanticdb-persistent-path来仅列出您关心的目录。这将减少保存的数据,这将不会重新加载。如果需要,它将根据需要重新分摊,但这将有助于保持总数据的下降。

您还可以使用语义 – before-fetch-tags-hook到在各种条件下返回nil的函数。查找由于大小,网络延迟等原因需要很长时间来解析的文件,并将其设置为从不解析。这也将节省一些时间。

使用GNU Global是加快速度的好办法。将其与语义symref一起使用将导致其找到的文件进行解析以提供输出显示的必需数据。没有太多的事情要做

对于上面发现的错误,如果您可以确定一种重现方式,请在cedet-devel邮件列表中分享,以便修复。通常当GNU Global标签无法转换为缓冲区标签时,该类型的错误已经显示出来。

为了将CEDET转移到控制之外,使用语义调试空闲功能和语义调试 – 空闲工作功能来缩小范围。看到上面有一些配置。

您可以使用cedet-gnu-global-create / update-database更新数据库,或将其添加到挂接。我不认为这是文件。

项目管理很棘手。大多数内置项目对小东西都很好。特别是具有定制构建系统的大型项目通常需要自定义EDE项目类型。创建新项目并不算太糟糕。如果您看到ede-linux或ede-emacs,您可以抓住基础知识。在您的自定义项目中,您可以包装所有相关项目,并覆盖宏,包括目录和编译命令等功能。我也为自己的工作写了一个自定义项目。这是非常相似的ede-linux与我的工作独特的东西。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读