1*debug.txt* For Vim version 7.1a. Last change: 2006 May 01 2 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. 10For debugging Vim scripts, functions, etc. see |debug-scripts| 11 121. Location of a crash, using gcc and gdb |debug-gcc| 132. Windows Bug Reporting |debug-win32| 14 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 412. Windows Bug Reporting *debug-win32* 42 43If the Windows version of Vim crashes in a reproducible manner, you can take 44some steps to provide a useful bug report. 45 46 47GENERIC ~ 48 49You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb 50for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the 51same place that you obtained the executable. Be sure to use the PDB that 52matches the EXE (same date). 53 54If you built the executable yourself with the Microsoft Visual C++ compiler, 55then the PDB was built with the EXE. 56 57Alternatively, 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 68 *debug-vs2005* 692.2 Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express ~ 70 71First launch vim.exe or gvim.exe and then launch Visual Studio. (If you don't 72have Visual Studio, follow the instructions at |get-ms-debuggers| to obtain a 73free copy of Visual C++ 2005 Express Edition.) 74 75On the Tools menu, click Attach to Process. Choose the Vim process. 76 77In Vim, reproduce the crash. A dialog will appear in Visual Studio, telling 78you about the unhandled exception in the Vim process. Click Break to break 79into the process. 80 81Visual Studio will pop up another dialog, telling you that no symbols are 82loaded and that the source code cannot be displayed. Click OK. 83 84Several windows will open. Right-click in the Call Stack window. Choose Load 85Symbols. The Find Symbols dialog will open, looking for (g)vim.pdb. Navigate 86to the directory where you have the PDB file and click Open. 87 88At this point, you should have a full call stack with vim function names and 89line numbers. Double-click one of the lines and the Find Source dialog will 90appear. Navigate to the directory where the Vim source is (if you have it.) 91 92If you don't know how to debug this any further, follow the instructions 93at ":help bug-reports". Paste the call stack into the bug report. 94 95If you have a non-free version of Visual Studio, you can save a minidump via 96the Debug menu and send it with the bug report. A minidump is a small file 97(<100KB), which contains information about the state of your process. 98Visual C++ 2005 Express Edition cannot save minidumps and it cannot be 99installed as a just-in-time debugger. Use WinDbg, |debug-windbg|, if you 100need to save minidumps or you want a just-in-time (postmortem) debugger. 101 102 *debug-windbg* 1032.3 Debugging Vim crashes with WinDbg ~ 104 105See |get-ms-debuggers| to obtain a copy of WinDbg. 106 107As with the Visual Studio IDE, you can attach WinDbg to a running Vim process. 108You can also have your system automatically invoke WinDbg as a postmortem 109debugger. To set WinDbg as your postmortem debugger, run "windbg -I". 110 111To attach WinDbg to a running Vim process, launch WinDbg. On the File menu, 112choose Attach to a Process. Select the Vim process and click OK. 113 114At this point, choose Symbol File Path on the File menu, and add the folder 115containing your Vim PDB to the sympath. If you have Vim source available, 116use Source File Path on the File menu. You can now open source files in WinDbg 117and set breakpoints, if you like. Reproduce your crash. WinDbg should open the 118source file at the point of the crash. Using the View menu, you can examine 119the call stack, local variables, watch windows, and so on. 120 121If WinDbg is your postmortem debugger, you do not need to attach WinDbg to 122your Vim process. Simply reproduce the crash and WinDbg will launch 123automatically. As above, set the Symbol File Path and the Source File Path. 124 125To save a minidump, type the following at the WinDbg command line: > 126 .dump vim.dmp 127< 128 *debug-minidump* 1292.4 Opening a Minidump ~ 130 131If you have a minidump file, you can open it in Visual Studio or in WinDbg. 132 133In Visual Studio 2005: on the File menu, choose Open, then Project/Solution. 134Navigate to the .dmp file and open it. Now press F5 to invoke the debugger. 135Follow the instructions in |debug-vs2005| to set the Symbol File Path. 136 137In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in 138|debug-windbg| to set the Symbol File Path. 139 140 *get-ms-debuggers* 1412.5 Obtaining Microsoft Debugging Tools ~ 142 143The Debugging Tools for Windows (including WinDbg) can be downloaded from 144 http://www.microsoft.com/whdc/devtools/debugging/default.mspx 145This includes the WinDbg debugger. 146 147Visual C++ 2005 Express Edition can be downloaded for free from: 148 http://msdn.microsoft.com/vstudio/express/visualC/default.aspx 149 150========================================================================= 151 vim:tw=78:ts=8:ft=help:norl: 152