我用org导出pdf beamer,有时候org文件稍大点,速度就会很慢,“卡”在org导出latex这个过程中,占用内存会上升到十几个、二十几G,但大多数最终会导出成功,今天导出一个org文件直接飙升到40G,请教一下怎么排查这个问题。
定位函数问题:
M-: (profiler-start 'cpu+mem)
- 导出文件
M-x profiler-report
定位文件问题:
- 二分法由下至上屏蔽文件内容
- 导出,观察内存占用
1 个赞
谢谢,以后遇到没有完全卡死试一试。
你先导出 tex 文件看快不快,然后用 latex 命令编译 tex 文件看看是不是很慢,如果很慢,那就不是 emacs 的问题.
是org导出latex这个阶段的问题,minibuffer中可以看到,还没有到编译tex这一步。
可以用 emacs -q
在只加载 org 的情况下导出试试, 如果没问题的话可能是配置或者其他 package 在 org-export 里面加了些有 bug 的 advice, 那个 org--fix-async-export-a
函数看起来就挺可疑的.
确实可疑,我查了org--fix-async-export-a
这个函数的帮助,helpful说是org.el
文件中定义的函数
org.el
文件中却没有找到这个函数。在doom-emacs里面搜了一下,原来是doom-emacs定义的advice:
(defadvice! +org--fix-async-export-a (fn &rest args)
:around '(org-export-to-file org-export-as)
(let ((old-async-init-file org-export-async-init-file)
(org-export-async-init-file (make-temp-file "doom-org-async-export")))
(doom-file-write
org-export-async-init-file
`((setq org-export-async-debug ,(or org-export-async-debug debug-on-error)
load-path ',load-path)
(unwind-protect
(let ((init-file ,old-async-init-file))
(if init-file
(load init-file nil t)
(load ,early-init-file nil t)
(require 'doom-start)))
(delete-file load-file-name))))
(apply fn args))))
可能问题是出在这里。我遇到的这种问题,重启emacs后大多不能重现。