/usr/share/doc/vim/html/debug.html is in vim-doc 2:8.0.1453-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | <HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" content="text/html; charset=ISO-8859-1">
<TITLE>Vim documentation: debug</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<H1>Vim documentation: debug</H1>
<A NAME="top"></A>
<A HREF="index.html">main help file</A>
<HR>
<PRE>
*<A NAME="debug.txt"></A><B>debug.txt</B>* For Vim version 8.0. Last change: 2017 Jul 15
VIM REFERENCE MANUAL by <A HREF="intro.html#Bram">Bram</A> <A HREF="intro.html#Moolenaar">Moolenaar</A>
Debugging Vim *<A NAME="debug-vim"></A><B>debug-vim</B>*
This is for debugging Vim itself, when <A HREF="motion.html#it">it</A> doesn't work properly.
For debugging Vim scripts, <A HREF="eval.html#functions">functions</A>, etc. see |<A HREF="repeat.html#debug-scripts">debug-scripts</A>|
1. Location of a crash, using gcc and <A HREF="#gdb">gdb</A> |<A HREF="#debug-gcc">debug-gcc</A>|
2. Locating memory leaks |<A HREF="#debug-leaks">debug-leaks</A>|
3. Windows Bug Reporting |<A HREF="#debug-win32">debug-win32</A>|
==============================================================================
1. Location of a crash, using gcc and <A HREF="#gdb">gdb</A> *<A NAME="debug-gcc"></A><B>debug-gcc</B>* *<A NAME="gdb"></A><B>gdb</B>*
When Vim crashes in one of the test files, and you are using gcc for
compilation, here is what you can <A HREF="diff.html#do">do</A> to find out exactly where Vim crashes.
This also applies when using the MingW tools.
1. Compile Vim with the "<A HREF="starting.html#-g">-g</A>" option (there is a line in the src/Makefile for
this, which you can uncomment). Also make sure "strip" is disabled (do not
<A HREF="usr_90.html#install">install</A> <A HREF="motion.html#it">it</A>, or use the line "STRIP = /bin/true").
2. Execute these commands (replace "11" with the test that fails):
<B> cd testdir</B>
<B> gdb ../vim</B>
<B> run -u unix.vim -U NONE -s dotest.in test11.in</B>
3. Check where Vim crashes, <A HREF="#gdb">gdb</A> should give a message for this.
4. Get a stack trace from <A HREF="#gdb">gdb</A> with this command:
<B> where</B>
You can check out different places in the stack trace with:
<B> frame 3</B>
<A HREF="insert.html#Replace">Replace</A> "3" with one of the numbers in the stack trace.
==============================================================================
2. Locating memory leaks *<A NAME="debug-leaks"></A><B>debug-leaks</B>* *<A NAME="valgrind"></A><B>valgrind</B>*
If you suspect Vim is leaking memory and you are using Linux, the <A HREF="#valgrind">valgrind</A>
tool is very useful to pinpoint memory leaks.
First of all, build Vim with EXITFREE defined. Search for this in MAKEFILE
and uncomment the line.
Use this command to start Vim:
<B> valgrind --log-file=valgrind.log --leak-check=full ./vim</B>
Note: Vim will run much slower. If your <A HREF="starting.html#.vimrc">.vimrc</A> is big or you have several
plugins you need to be patient for <A HREF="starting.html#startup">startup</A>, or run with the "<A HREF="starting.html#--clean">--clean</A>"
argument.
There are often a few leaks from libraries, such <A HREF="motion.html#as">as</A> getpwuid() and
XtVaAppCreateShell(). Those are unavoidable. The number of bytes should be
very small a Kbyte or <A HREF="various.html#less">less</A>.
==============================================================================
3. Windows Bug Reporting *<A NAME="debug-win32"></A><B>debug-win32</B>*
If the Windows version of Vim crashes in a reproducible manner, you can take
some steps to provide a useful bug report.
<B><FONT COLOR="PURPLE">3.1 GENERIC </FONT></B>
You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb
for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the
same place that you obtained the executable. Be sure to use the PDB that
matches the EXE (same date).
If you built the executable yourself with the Microsoft <A HREF="visual.html#Visual">Visual</A> C++ compiler,
then the PDB was built with the EXE.
Alternatively, if you have the source files, you can import Make_ivc.mak into
<A HREF="visual.html#Visual">Visual</A> Studio <A HREF="motion.html#as">as</A> a workspace. Then select a debug configuration, build and
you can <A HREF="diff.html#do">do</A> all kinds of debugging (set breakpoints, watch <A HREF="eval.html#variables">variables</A>, etc.).
If you have <A HREF="visual.html#Visual">Visual</A> Studio, use that instead of the VC Toolkit and WinDbg.
For other compilers, you should always use the corresponding debugger: TD for
a Vim executable compiled with the Borland compiler; <A HREF="#gdb">gdb</A> (see above
|<A HREF="#debug-gcc">debug-gcc</A>|) for the Cygwin and MinGW compilers.
*<A NAME="debug-vs2005"></A><B>debug-vs2005</B>*
<B><FONT COLOR="PURPLE">3.2 Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express </FONT></B>
First launch vim.exe or gvim.exe and then launch <A HREF="visual.html#Visual">Visual</A> Studio. (If you don't
have <A HREF="visual.html#Visual">Visual</A> Studio, follow the instructions at |<A HREF="#get-ms-debuggers">get-ms-debuggers</A>| to obtain a
free copy of <A HREF="visual.html#Visual">Visual</A> C++ 2005 Express Edition.)
On the Tools menu, click Attach to Process. Choose the Vim process.
In Vim, reproduce the crash. A <A HREF="gui_w32.html#dialog">dialog</A> will appear in <A HREF="visual.html#Visual">Visual</A> Studio, telling
you about the unhandled exception in the Vim process. Click Break to break
into the process.
<A HREF="visual.html#Visual">Visual</A> Studio will pop up another <A HREF="gui_w32.html#dialog">dialog</A>, telling you that no symbols are
loaded and that the source code cannot be displayed. Click OK.
Several <A HREF="windows.html#windows">windows</A> will open. Right-click in the Call Stack <A HREF="windows.html#window">window</A>. Choose Load
Symbols. The Find Symbols <A HREF="gui_w32.html#dialog">dialog</A> will open, looking for (g)vim.pdb. Navigate
to the directory where you have the PDB file and click Open.
At this point, you should have a full call stack with vim function names and
line numbers. Double-click one of the lines and the Find Source <A HREF="gui_w32.html#dialog">dialog</A> will
appear. Navigate to the directory where the Vim source is (if you have <A HREF="motion.html#it">it</A>.)
If you don't know how to debug this any further, follow the instructions
at "<A HREF="helphelp.html#:help">:help</A> bug-reports". Paste the call stack into the bug report.
If you have a non-free version of <A HREF="visual.html#Visual">Visual</A> Studio, you can save a minidump via
the Debug menu and send <A HREF="motion.html#it">it</A> with the bug report. A minidump is a small file
(<100KB), which contains information about the state of your process.
<A HREF="visual.html#Visual">Visual</A> C++ 2005 Express Edition cannot save minidumps and <A HREF="motion.html#it">it</A> cannot be
installed <A HREF="motion.html#as">as</A> a just-in-time debugger. Use WinDbg, |<A HREF="#debug-windbg">debug-windbg</A>|, if you
need to save minidumps or you want a just-in-time (postmortem) debugger.
*<A NAME="debug-windbg"></A><B>debug-windbg</B>*
<B><FONT COLOR="PURPLE">3.3 Debugging Vim crashes with WinDbg </FONT></B>
See |<A HREF="#get-ms-debuggers">get-ms-debuggers</A>| to obtain a copy of WinDbg.
As with the <A HREF="visual.html#Visual">Visual</A> Studio IDE, you can attach WinDbg to a running Vim process.
You can also have your system automatically invoke WinDbg <A HREF="motion.html#as">as</A> a postmortem
debugger. To set WinDbg <A HREF="motion.html#as">as</A> your postmortem debugger, run "windbg -I".
To attach WinDbg to a running Vim process, launch WinDbg. On the File menu,
choose Attach to a Process. <A HREF="visual.html#Select">Select</A> the Vim process and click OK.
At this point, choose Symbol File Path on the File menu, and add the folder
containing your Vim PDB to the sympath. If you have Vim source available,
use Source File Path on the File menu. You can now open source files in WinDbg
and set breakpoints, if you like. Reproduce your crash. WinDbg should open the
source file at the point of the crash. Using the <A HREF="starting.html#View">View</A> menu, you can examine
the call stack, local <A HREF="eval.html#variables">variables</A>, watch <A HREF="windows.html#windows">windows</A>, and so on.
If WinDbg is your postmortem debugger, you <A HREF="diff.html#do">do</A> not need to attach WinDbg to
your Vim process. Simply reproduce the crash and WinDbg will launch
automatically. As above, set the Symbol File Path and the Source File Path.
To save a minidump, type the following at the WinDbg command line:
<B> .dump vim.dmp</B>
*<A NAME="debug-minidump"></A><B>debug-minidump</B>*
<B><FONT COLOR="PURPLE">3.4 Opening a Minidump </FONT></B>
If you have a minidump file, you can open <A HREF="motion.html#it">it</A> in <A HREF="visual.html#Visual">Visual</A> Studio or in WinDbg.
In <A HREF="visual.html#Visual">Visual</A> Studio 2005: on the File menu, choose Open, then Project/Solution.
Navigate to the .dmp file and open <A HREF="motion.html#it">it</A>. Now press F5 to invoke the debugger.
Follow the instructions in |<A HREF="#debug-vs2005">debug-vs2005</A>| to set the Symbol File Path.
In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in
|<A HREF="#debug-windbg">debug-windbg</A>| to set the Symbol File Path.
*<A NAME="get-ms-debuggers"></A><B>get-ms-debuggers</B>*
<B><FONT COLOR="PURPLE">3.5 Obtaining Microsoft Debugging Tools </FONT></B>
The Debugging Tools for Windows (including WinDbg) can be downloaded from
<A HREF="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">http://www.microsoft.com/whdc/devtools/debugging/default.mspx</A>
This includes the WinDbg debugger.
<A HREF="visual.html#Visual">Visual</A> C++ 2005 Express Edition can be downloaded for free from:
<A HREF="http://msdn.microsoft.com/vstudio/express/visualC/default.aspx">http://msdn.microsoft.com/vstudio/express/visualC/default.aspx</A>
<A HREF="#top">top</A> - <A HREF="index.html">main help file</A>
</PRE>
</BODY>
</HTML>
|