*debug.txt* For Vim version 7.0g. Last change: 2006 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar Debugging Vim *debug-vim* This is for debugging Vim itself, when it doesn't work properly. For debugging Vim scripts, functions, etc. see |debug-scripts| 1. Location of a crash, using gcc and gdb |debug-gcc| 2. Windows Bug Reporting |debug-win32| ============================================================================== 1. Location of a crash, using gcc and gdb *debug-gcc* When Vim crashes in one of the test files, and you are using gcc for compilation, here is what you can do to find out exactly where Vim crashes. This also applies when using the MingW tools. 1. Compile Vim with the "-g" option (there is a line in the Makefile for this, which you can uncomment). 2. Execute these commands (replace "11" with the test that fails): > cd testdir gdb ../vim run -u unix.vim -U NONE -s dotest.in test11.in 3. Check where Vim crashes, gdb should give a message for this. 4. Get a stack trace from gdb with this command: > where < You can check out different places in the stack trace with: > frame 3 < Replace "3" with one of the numbers in the stack trace. ============================================================================== 2. Windows Bug Reporting *debug-win32* If the Windows version of Vim crashes in a reproducible manner, you can take some steps to provide a useful bug report. GENERIC ~ You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb for gvim.exe, or vim.pdb for vim.exe. It 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 Visual C++ compiler, then the PDB was built with the EXE. Alternatively, if you have the source files, you can import Make_ivc.mak into Visual Studio as a workspace. Then select a debug configuration, build and you can do all kinds of debugging (set breakpoints, watch variables, etc.). If you have Visual 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; gdb (see above |debug-gcc|) for the Cygwin and MinGW compilers. Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express ~ First launch vim.exe or gvim.exe and then launch Visual Studio. (If you don't have Visual Studio, follow the instructions in src/INSTALLpc.txt to obtain a free copy of Visual C++ 2005 Express Edition.) On the Tools menu, click Attach to Process. Choose the Vim process. In Vim, reproduce the crash. A dialog will appear in Visual Studio, telling you about the unhandled exception in the Vim process. Click Break to break into the process. Visual Studio will pop up another dialog, telling you that no symbols are loaded and that the source code cannot be displayed. Click OK. Several windows will open. Right-click in the Call Stack window. Choose Load Symbols. The Find Symbols dialog 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 dialog will appear. Navigate to the directory where the Vim source is (if you have it.) If you don't know how to debug this any further, follow the instructions at ":help bug-reports". Paste the call stack into the bug report. If you have a non-free version of Visual Studio, you can save a minidump via the Debug menu and send it with the bug report. A minidump is a small file (<100KB), which contains information about the state of your process. Debugging Vim with Debugging Tools ~ You can download the Microsoft Visual C++ Toolkit from http://msdn.microsoft.com/visualc/vctoolkit2003/ This contains the command-line tools, but not the Visual Studio IDE. The Debugging Tools for Windows can be downloaded from http://www.microsoft.com/whdc/devtools/debugging/default.mspx This includes the WinDbg debugger. ========================================================================= vim:tw=78:ts=8:ft=help:norl: