如何定位emacs卡顿的问题

很多时候听到人跟我抱怨emacs在某种情况下很卡,这时候就很无奈,因为毕竟运行环境不同,别人也很难及时的帮助你定位问题。今天在这里介绍emacs(24.3之后提供)内置的一个分析工具:profiler。

举个例子。我之前发现在编辑某个python文件的时候特别卡,于是我就需要定位一下。
此时执行:

M-x profiler-start

emacs会提示你监测内存还是cpu,还是两者都需要。卡顿一般是因为cpu占用高,所以我选择cpu。此时emacs开始记录cpu的运行情况了。

然后乱七八糟操作一阵,觉得差不多了,执行:

M-x profiler-report

来展示统计数据:
20190421-emacsprofile-0.png

可以看到,有个罪魁祸首“indent-guide-post-command-hook”占了绝大部分的功劳。

find-function indent-guide-post-command-hook

找到这个函数:
20190421-emacsprofile-1.png

发现是一个第三方库:indent-guide,通过melpa找到这个库:
https://github.com/zk-phi/indent-guide

发现是一个用来展示缩进竖线的库。在配置里将其禁掉,再编辑,发现不卡了。

最后,如果定位结束,不要忘了停止监听:

M-x profiler-stop

以上。


License: CC BY-SA 4.0

Contact