Merge branch 'MacVim'
[MacVim/KaoriYa.git] / runtime / doc / debug.txt
blob654d89b581b2807a2ce83428b3b4752b689059fc
1 *debug.txt*     For Vim version 7.2.  Last change: 2009 Jul 22
4                   VIM REFERENCE MANUAL    by Bram Moolenaar
7 Debugging Vim                                           *debug-vim*
9 This is for debugging Vim itself, when it doesn't work properly.
10 For debugging Vim scripts, functions, etc. see |debug-scripts|
12 1. Location of a crash, using gcc and gdb       |debug-gcc|
13 2. Locating memory leaks                        |debug-leaks|
14 3. Windows Bug Reporting                        |debug-win32|
16 ==============================================================================
18 1. Location of a crash, using gcc and gdb               *debug-gcc*
20 When Vim crashes in one of the test files, and you are using gcc for
21 compilation, here is what you can do to find out exactly where Vim crashes.
22 This also applies when using the MingW tools.
24 1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
25    which you can uncomment).
27 2. Execute these commands (replace "11" with the test that fails): >
28         cd testdir
29         gdb ../vim
30         run -u unix.vim -U NONE -s dotest.in test11.in
32 3. Check where Vim crashes, gdb should give a message for this.
34 4. Get a stack trace from gdb with this command: >
35         where
36 <  You can check out different places in the stack trace with: >
37         frame 3
38 <  Replace "3" with one of the numbers in the stack trace.
40 ==============================================================================
42 2. Locating memory leaks                                *debug-leaks*
44 If you suspect Vim is leaking memory and you are using Linux, the valgrind
45 tool is very useful to pinpoint memory leaks.
47 First of all, build Vim with EXITFREE defined.  Search for this in MAKEFILE
48 and uncomment the line.
50 Use this command to start Vim:                          *valgrind*
52         valgrind --log-file=valgrind.log ./vim
54 Note: Vim will run much slower.  If your .vimrc is big or you have several
55 plugins you need to be patient for startup, or run with the "-u NONE"
56 argument.
58 ==============================================================================
60 3. Windows Bug Reporting                                *debug-win32*
62 If the Windows version of Vim crashes in a reproducible manner, you can take
63 some steps to provide a useful bug report.
66 GENERIC ~
68 You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb
69 for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the
70 same place that you obtained the executable. Be sure to use the PDB that
71 matches the EXE (same date).
73 If you built the executable yourself with the Microsoft Visual C++ compiler,
74 then the PDB was built with the EXE.
76 Alternatively, if you have the source files, you can import Make_ivc.mak into
77 Visual Studio as a workspace.  Then select a debug configuration, build and
78 you can do all kinds of debugging (set breakpoints, watch variables, etc.).
80 If you have Visual Studio, use that instead of the VC Toolkit and WinDbg.
82 For other compilers, you should always use the corresponding debugger: TD for
83 a Vim executable compiled with the Borland compiler; gdb (see above
84 |debug-gcc|) for the Cygwin and MinGW compilers.
87                                                                 *debug-vs2005*
88 2.2 Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express ~
90 First launch vim.exe or gvim.exe and then launch Visual Studio.  (If you don't
91 have Visual Studio, follow the instructions at |get-ms-debuggers| to obtain a
92 free copy of Visual C++ 2005 Express Edition.)
94 On the Tools menu, click Attach to Process.  Choose the Vim process.
96 In Vim, reproduce the crash.  A dialog will appear in Visual Studio, telling
97 you about the unhandled exception in the Vim process.  Click Break to break
98 into the process.
100 Visual Studio will pop up another dialog, telling you that no symbols are
101 loaded and that the source code cannot be displayed.  Click OK.
103 Several windows will open.  Right-click in the Call Stack window.  Choose Load
104 Symbols.  The Find Symbols dialog will open, looking for (g)vim.pdb.  Navigate
105 to the directory where you have the PDB file and click Open.
107 At this point, you should have a full call stack with vim function names and
108 line numbers.  Double-click one of the lines and the Find Source dialog will
109 appear.  Navigate to the directory where the Vim source is (if you have it.)
111 If you don't know how to debug this any further, follow the instructions
112 at ":help bug-reports".  Paste the call stack into the bug report.
114 If you have a non-free version of Visual Studio, you can save a minidump via
115 the Debug menu and send it with the bug report.  A minidump is a small file
116 (<100KB), which contains information about the state of your process.
117 Visual C++ 2005 Express Edition cannot save minidumps and it cannot be
118 installed as a just-in-time debugger. Use WinDbg, |debug-windbg|, if you
119 need to save minidumps or you want a just-in-time (postmortem) debugger.
121                                                                 *debug-windbg*
122 2.3 Debugging Vim crashes with WinDbg ~
124 See |get-ms-debuggers| to obtain a copy of WinDbg.
126 As with the Visual Studio IDE, you can attach WinDbg to a running Vim process.
127 You can also have your system automatically invoke WinDbg as a postmortem
128 debugger. To set WinDbg as your postmortem debugger, run "windbg -I".
130 To attach WinDbg to a running Vim process, launch WinDbg. On the File menu,
131 choose Attach to a Process. Select the Vim process and click OK.
133 At this point, choose Symbol File Path on the File menu, and add the folder
134 containing your Vim PDB to the sympath. If you have Vim source available,
135 use Source File Path on the File menu. You can now open source files in WinDbg
136 and set breakpoints, if you like. Reproduce your crash. WinDbg should open the
137 source file at the point of the crash. Using the View menu, you can examine
138 the call stack, local variables, watch windows, and so on.
140 If WinDbg is your postmortem debugger, you do not need to attach WinDbg to
141 your Vim process. Simply reproduce the crash and WinDbg will launch
142 automatically. As above, set the Symbol File Path and the Source File Path.
144 To save a minidump, type the following at the WinDbg command line: >
145         .dump vim.dmp
147                                                         *debug-minidump*
148 2.4 Opening a Minidump ~
150 If you have a minidump file, you can open it in Visual Studio or in WinDbg.
152 In Visual Studio 2005: on the File menu, choose Open, then Project/Solution.
153 Navigate to the .dmp file and open it. Now press F5 to invoke the debugger.
154 Follow the instructions in |debug-vs2005| to set the Symbol File Path.
156 In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in
157 |debug-windbg| to set the Symbol File Path.
159                                                         *get-ms-debuggers*
160 2.5 Obtaining Microsoft Debugging Tools ~
162 The Debugging Tools for Windows (including WinDbg) can be downloaded from
163     http://www.microsoft.com/whdc/devtools/debugging/default.mspx
164 This includes the WinDbg debugger.
166 Visual C++ 2005 Express Edition can be downloaded for free from:
167     http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
169 =========================================================================
170  vim:tw=78:ts=8:ft=help:norl: