9

这与调试中提到的问题有关:Plugin (vim-latex) crashing gVim on startup

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

在反复使其崩溃后,我能够在状态行中读取 Python Traceback 字符串,其中提到了第 530 行C:\Python27\lib\site.py(其中仅包含known_paths = addusersitepackages(known_paths)),但是由于状态行显示将其截断,因此无法查看其余的回溯,并且仅出现在无论如何,在自动崩溃之前。

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

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

编辑:抱歉之前没有提到操作系统(除了通过C:\路径间接提及),这个问题出在 Windows 上。从另一个链接的问题来看,似乎几乎每个在 Windows 上尝试 latex-suite 的人都会遇到这个问题。

更新:只是一个 FTR - 设置 verbosefile 没有帮助(大概是因为每个文档都缓冲了写入),并且 :redir 也没有捕获这一点,以在此错误和崩溃之前发生的任何操作结束。

4

4 回答 4

3

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

这个答案可能是解决 Windows vim 中的乳胶插件问题的一种解决方法。但是,如果您的问题坚持“在崩溃前获取错误消息”,它可能无法为您提供帮助。我对windows操作系统没有太多经验。

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

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

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

let g:Tex_UsePython=0

很高兴看到它有所帮助。

于 2014-01-29T00:05:53.900 回答
1

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

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

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

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

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

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

于 2014-01-28T10:14:14.563 回答
1

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

vim file.tex &> errors.log

或者

vim file.tex 2> errors.log
于 2014-01-27T15:16:06.823 回答
0

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

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

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

于 2014-01-27T15:17:45.590 回答