在 Vim 崩溃之前捕获它的错误输出



这与在以下问题中提到的问题有关:插件(vim-leatex)在启动上撞车

安装乳胶 - 套件后,每次我打开一个.tex文件(无论是来自GVIM还是终端VIM),无论它是否包含 begin nation语句,VIM都会立即崩溃。

反复崩溃后,我能够读取状态行中的python追溯字符串,该字符线在 C:Python27libsite.py中提到了530(仅包含 known_paths = addusersitepackages(known_paths)),但由于状态线显示将其截断,因此无法查看回音的其余部分而且,这只会出现片刻,然后自动崩溃。

有没有一种方法可以以更永久和完整的方式捕获此追溯输出,以及从这个插件到python等。

(我尝试了-V15filename.log选项

编辑:对以前没有提及OS(通过C:路径间接)表示歉意,此问题在Windows上。从另一个链接的问题来看,几乎每个尝试在Windows上尝试乳胶的人都会遇到这个问题。

更新:只是ftr-设置VerboseFile无济于事(大概是因为写信是根据文档缓冲的),并且:redir也没有捕获此内容,以此错误和崩溃之前发生的任何操作结束。

好吧,我把这里作为答案。

此答案可能是解决Windows VIM中乳胶插件问题的解决方案。但是,如果您的问题遵守"崩溃之前获取错误消息",则可能不会给您帮助。我对Windows OS没有太多经验。

乳胶套件插件使用Python生成一些格式化的文本。它可以带来更好的性能。但是,该插件也为此提供了无需python的方法,可以在不安装Python运行时或使用非常旧的Python版本的情况下使用该插件。

由于您提到您的问题是在Python代码中。您可以尝试在该插件中禁用Python,并测试性能是否可以接受。

插件为此提供了一个变量,您可以在VIMRC

中添加此行
let g:Tex_UsePython=0

很高兴看到它有所帮助。

您是否尝试使用重定向的stderr运行?

vim file.tex &> errors.log

vim file.tex 2> errors.log

1)如果您能够从源中编译vim(在Windows上使用mingw),则可以使用gdb运行它。然后,您可以设置一些断点/检查堆栈跟踪,直到检测到崩溃附近的一条线为止。使用gdb运行VIM并读取堆栈跟踪的说明在以下位置找到:help debug-gcc。

在该帮助文件的末尾(:help help get-ms-debuggers)您可以找到有关如何获得Windows的一些调试工具的说明。

这些工具可用于以下替代方案,详细说明:help debug-win32:

2)如果您没有编译VIM,请获取调试符号(PDB),该符号应从获得可执行文件的同一位置可用。将Visual Studio附加到VIM过程,重现崩溃,然后通过Visual Studio的对话框读取堆栈跟踪。

3)与2)相同,但使用windbg代替视觉工作室。

4)检查小型文件,以防您的崩溃生成一个。除了参考的帮助部分外,您还可以在以下链接上找到有用的信息:

  • 在哪里可以在Windows 7中找到迷你DMP文件
  • 如何读取小内存转储文件

如果您在运行Linux的计算机上,您是否尝试将strace输出保存在文件中?

strace gvim -V9log.txt file.tex > stdout.txt 2> stderr.txt

然后仔细查看输出文件,尤其是最后10-100行?我不确定它是否会捕获插件的系统调用,但这可能是一个起点。

最新更新