blob: 815c6dcc8fedc785f3e1b01e9d03e3c37d6f92ea [file] [log] [blame]
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001*debug.txt* For Vim version 7.0g. Last change: 2006 Apr 30
Bram Moolenaare344bea2005-09-01 20:46:49 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Debugging Vim *debug-vim*
8
9This is for debugging Vim itself, when it doesn't work properly.
Bram Moolenaaracf53452005-12-17 22:06:52 +000010For debugging Vim scripts, functions, etc. see |debug-scripts|
Bram Moolenaare344bea2005-09-01 20:46:49 +000011
121. Location of a crash, using gcc and gdb |debug-gcc|
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000132. Windows Bug Reporting |debug-win32|
Bram Moolenaare344bea2005-09-01 20:46:49 +000014
15==============================================================================
16
171. Location of a crash, using gcc and gdb *debug-gcc*
18
19When Vim crashes in one of the test files, and you are using gcc for
20compilation, here is what you can do to find out exactly where Vim crashes.
21This also applies when using the MingW tools.
22
231. Compile Vim with the "-g" option (there is a line in the Makefile for this,
24 which you can uncomment).
25
262. Execute these commands (replace "11" with the test that fails): >
27 cd testdir
28 gdb ../vim
29 run -u unix.vim -U NONE -s dotest.in test11.in
30
313. Check where Vim crashes, gdb should give a message for this.
32
334. Get a stack trace from gdb with this command: >
34 where
35< You can check out different places in the stack trace with: >
36 frame 3
37< Replace "3" with one of the numbers in the stack trace.
38
39==============================================================================
40
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000412. Windows Bug Reporting *debug-win32*
Bram Moolenaare344bea2005-09-01 20:46:49 +000042
Bram Moolenaarf9393ef2006-04-24 19:47:27 +000043If the Windows version of Vim crashes in a reproducible manner, you can take
44some steps to provide a useful bug report.
Bram Moolenaare344bea2005-09-01 20:46:49 +000045
Bram Moolenaarf9393ef2006-04-24 19:47:27 +000046
47GENERIC ~
48
49You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb
50for gvim.exe, or vim.pdb for vim.exe. It should be available from the same
51place that you obtained the executable. Be sure to use the PDB that matches
52the EXE (same date).
Bram Moolenaare344bea2005-09-01 20:46:49 +000053
54If you built the executable yourself with the Microsoft Visual C++ compiler,
55then the PDB was built with the EXE.
56
Bram Moolenaarf9393ef2006-04-24 19:47:27 +000057Alternatively, if you have the source files, you can import Make_ivc.mak into
58Visual Studio as a workspace. Then select a debug configuration, build and
59you can do all kinds of debugging (set breakpoints, watch variables, etc.).
60
61If you have Visual Studio, use that instead of the VC Toolkit and WinDbg.
62
63For other compilers, you should always use the corresponding debugger: TD for
64a Vim executable compiled with the Borland compiler; gdb (see above
65|debug-gcc|) for the Cygwin and MinGW compilers.
66
67
68Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express ~
69
70First launch vim.exe or gvim.exe and then launch Visual Studio. (If you don't
71have Visual Studio, follow the instructions in src/INSTALLpc.txt to obtain a
72free copy of Visual C++ 2005 Express Edition.)
73
74On the Tools menu, click Attach to Process. Choose the Vim process.
75
76In Vim, reproduce the crash. A dialog will appear in Visual Studio, telling
77you about the unhandled exception in the Vim process. Click Break to break
78into the process.
79
80Visual Studio will pop up another dialog, telling you that no symbols are
81loaded and that the source code cannot be displayed. Click OK.
82
83Several windows will open. Right-click in the Call Stack window. Choose Load
84Symbols. The Find Symbols dialog will open, looking for (g)vim.pdb. Navigate
85to the directory where you have the PDB file and click Open.
86
87At this point, you should have a full call stack with vim function names and
88line numbers. Double-click one of the lines and the Find Source dialog will
89appear. Navigate to the directory where the Vim source is (if you have it.)
90
91If you don't know how to debug this any further, follow the instructions
92at ":help bug-reports". Paste the call stack into the bug report.
93
94If you have a non-free version of Visual Studio, you can save a minidump via
95the Debug menu and send it with the bug report. A minidump is a small file
96(<100KB), which contains information about the state of your process.
97
98
99Debugging Vim with Debugging Tools ~
100
Bram Moolenaare344bea2005-09-01 20:46:49 +0000101You can download the Microsoft Visual C++ Toolkit from
102 http://msdn.microsoft.com/visualc/vctoolkit2003/
103This contains the command-line tools, but not the Visual Studio IDE.
104
105The Debugging Tools for Windows can be downloaded from
106 http://www.microsoft.com/whdc/devtools/debugging/default.mspx
107This includes the WinDbg debugger.
108
Bram Moolenaare344bea2005-09-01 20:46:49 +0000109
110=========================================================================
111 vim:tw=78:ts=8:ft=help:norl: