mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
112 lines
4.2 KiB
Plaintext
112 lines
4.2 KiB
Plaintext
*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:
|