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

时间:2014-01-20 02:31:25

标签: vim latex-suite

这与调试以下问题有关:Plugin (vim-latex) crashing gVim on startup

安装latex-suite后,每次打开.tex文件时,无论是否来自gVim或者终端vim,是否包含\ begin语句,Vim都会立即崩溃。

在反复崩溃后,我能够在状态行中读取Python Traceback字符串,其中提到C:\Python27\lib\site.py中的第530行(仅包含known_paths = addusersitepackages(known_paths)),但其余的回溯是不可见,因为状态行显示会截断它,这只会在自动崩溃之前显示片刻。

有没有办法可以更加永久和完整的方式捕获这个Traceback输出,以及从这个插件到Python的方式等等?

(我尝试了-V15filename.log选项,但它(像往常一样)没用,包含一些部分日志到vim启动过程中的一个古老点。)

编辑:对于之前未提及操作系统的道歉(除了间接通过C:\路径),此问题出现在Windows上。从另一个相关问题来看,似乎几乎所有在Windows上尝试使用latex-suite的人都遇到了这个问题。

更新:只是一个FTR - 设置verbosefile没有帮助(可能是因为写入是按照文档缓冲的),并且:redir也没有捕获它,结束于此错误和崩溃之前发生的任何操作。

4 个答案:

答案 0 :(得分:3)

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

这个答案可能有助于解决windows vim中的乳胶插件问题。但是,如果您的问题坚持“在崩溃之前收到错误消息”,它可能不会给您提供帮助。我对Windows操作系统没有多少经验。

Latex Suite插件使用python生成一些格式化文本。它可以带来更好的性能。然而,该插件也提供了无python方式,让用户无需安装python运行时或非常旧的python版本也使用该插件。

既然你提到你的问题是在python代码中。你可以尝试在该插件中禁用python,并测试性能是否可以接受。

该插件为此提供了一个变量,您可以在vimrc中添加此行

let g:Tex_UsePython=0
很高兴看到它有所帮助。

答案 1 :(得分:1)

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

vim file.tex &> errors.log

vim file.tex 2> errors.log

答案 2 :(得分:1)

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

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

这些工具可用于以下备选方案,详细解释于:help debug-win32

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

3)与2)相同,但使用WinDbg而不是Visual Studio。

4)检查Minidump file,以防你的崩溃产生一个。除了引用的帮助部分,您可以在以下链接中找到有用的信息:

答案 3 :(得分:0)

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

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

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