代码拉取完成,页面将自动刷新
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>debug - Vim Documentation</title>
<meta name="Generator" content="Vim/8.0">
<meta name="plugin-version" content="vim8.0">
<meta name="syntax" content="help">
<meta name="settings" content="no_pre,use_css,expand_tabs">
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="jquery.min.js" type="text/javascript"></script>
<script src="mark-current-page.js" type="text/javascript"></script>
</head>
<body>
<header>
<div class="header">
<a href="http://vim-jp.org/">vim-jp</a>
/ <a href="http://vim-jp.org/vimdoc-en/">vimdoc-en</a>
/ debug<br />
<a name="top"></a><h1>debug - Vim Documentation</h1>
<a href="index.html">Return to main</a>
<span class="EnglishJapaneseLink">
<span class="CurrentLanguage">English</span>
</span>
</div>
</header>
<nav>
<dl>
<dt>BASIC</dt>
<dd><ul>
<li><a href="quickref.html">quickref</a></li>
<li><a href="sponsor.html">sponsor</a></li>
</ul></dd>
<dt>USER MANUAL</dt>
<dd><ul>
<li><a href="usr_toc.html">usr_toc</a></li>
</ul></dd>
<dt>Getting Started</dt>
<dd><ul>
<li><a href="usr_01.html">usr_01</a></li>
<li><a href="usr_02.html">usr_02</a></li>
<li><a href="usr_03.html">usr_03</a></li>
<li><a href="usr_04.html">usr_04</a></li>
<li><a href="usr_05.html">usr_05</a></li>
<li><a href="usr_06.html">usr_06</a></li>
<li><a href="usr_07.html">usr_07</a></li>
<li><a href="usr_08.html">usr_08</a></li>
<li><a href="usr_09.html">usr_09</a></li>
<li><a href="usr_10.html">usr_10</a></li>
<li><a href="usr_11.html">usr_11</a></li>
<li><a href="usr_12.html">usr_12</a></li>
</ul></dd>
<dt>Editing Effectively</dt>
<dd><ul>
<li><a href="usr_20.html">usr_20</a></li>
<li><a href="usr_21.html">usr_21</a></li>
<li><a href="usr_22.html">usr_22</a></li>
<li><a href="usr_23.html">usr_23</a></li>
<li><a href="usr_24.html">usr_24</a></li>
<li><a href="usr_25.html">usr_25</a></li>
<li><a href="usr_26.html">usr_26</a></li>
<li><a href="usr_27.html">usr_27</a></li>
<li><a href="usr_28.html">usr_28</a></li>
<li><a href="usr_29.html">usr_29</a></li>
<li><a href="usr_30.html">usr_30</a></li>
<li><a href="usr_31.html">usr_31</a></li>
<li><a href="usr_32.html">usr_32</a></li>
</ul></dd>
<dt>Tuning Vim</dt>
<dd><ul>
<li><a href="usr_40.html">usr_40</a></li>
<li><a href="usr_41.html">usr_41</a></li>
<li><a href="usr_42.html">usr_42</a></li>
<li><a href="usr_43.html">usr_43</a></li>
<li><a href="usr_44.html">usr_44</a></li>
<li><a href="usr_45.html">usr_45</a></li>
</ul></dd>
<dt>Making Vim Run</dt>
<dd><ul>
<li><a href="usr_90.html">usr_90</a></li>
</ul></dd>
<dt>General subjects</dt>
<dd><ul>
<li><a href="intro.html">intro</a></li>
<li><a href="index.html">help</a></li>
<li><a href="helphelp.html">helphelp</a></li>
<li><a href="vimindex.html">index</a></li>
<li><a href="tags.html">tags</a></li>
<li><a href="howto.html">howto</a></li>
<li><a href="tips.html">tips</a></li>
<li><a href="message.html">message</a></li>
<li><a href="quotes.html">quotes</a></li>
<li><a href="todo.html">todo</a></li>
<li><a href="debug.html">debug</a></li>
<li><a href="develop.html">develop</a></li>
<li><a href="uganda.html">uganda</a></li>
</ul></dd>
<dt>Basic editing</dt>
<dd><ul>
<li><a href="starting.html">starting</a></li>
<li><a href="editing.html">editing</a></li>
<li><a href="motion.html">motion</a></li>
<li><a href="scroll.html">scroll</a></li>
<li><a href="insert.html">insert</a></li>
<li><a href="change.html">change</a></li>
<li><a href="indent.html">indent</a></li>
<li><a href="undo.html">undo</a></li>
<li><a href="repeat.html">repeat</a></li>
<li><a href="visual.html">visual</a></li>
<li><a href="various.html">various</a></li>
<li><a href="recover.html">recover</a></li>
</ul></dd>
<dt>Advanced editing</dt>
<dd><ul>
<li><a href="cmdline.html">cmdline</a></li>
<li><a href="options.html">options</a></li>
<li><a href="pattern.html">pattern</a></li>
<li><a href="map.html">map</a></li>
<li><a href="tagsrch.html">tagsrch</a></li>
<li><a href="quickfix.html">quickfix</a></li>
<li><a href="windows.html">windows</a></li>
<li><a href="tabpage.html">tabpage</a></li>
<li><a href="syntax.html">syntax</a></li>
<li><a href="spell.html">spell</a></li>
<li><a href="diff.html">diff</a></li>
<li><a href="autocmd.html">autocmd</a></li>
<li><a href="filetype.html">filetype</a></li>
<li><a href="eval.html">eval</a></li>
<li><a href="channel.html">channel</a></li>
<li><a href="fold.html">fold</a></li>
</ul></dd>
<dt>Special issues</dt>
<dd><ul>
<li><a href="print.html">print</a></li>
<li><a href="remote.html">remote</a></li>
<li><a href="term.html">term</a></li>
<li><a href="digraph.html">digraph</a></li>
<li><a href="mbyte.html">mbyte</a></li>
<li><a href="mlang.html">mlang</a></li>
<li><a href="arabic.html">arabic</a></li>
<li><a href="farsi.html">farsi</a></li>
<li><a href="hebrew.html">hebrew</a></li>
<li><a href="russian.html">russian</a></li>
<li><a href="ft_ada.html">ft_ada</a></li>
<li><a href="ft_sql.html">ft_sql</a></li>
<li><a href="hangulin.html">hangulin</a></li>
<li><a href="rileft.html">rileft</a></li>
</ul></dd>
<dt>GUI</dt>
<dd><ul>
<li><a href="gui.html">gui</a></li>
<li><a href="gui_w32.html">gui_w32</a></li>
<li><a href="gui_x11.html">gui_x11</a></li>
</ul></dd>
<dt>Interfaces</dt>
<dd><ul>
<li><a href="if_cscop.html">if_cscop</a></li>
<li><a href="if_lua.html">if_lua</a></li>
<li><a href="if_mzsch.html">if_mzsch</a></li>
<li><a href="if_perl.html">if_perl</a></li>
<li><a href="if_pyth.html">if_pyth</a></li>
<li><a href="if_tcl.html">if_tcl</a></li>
<li><a href="if_ole.html">if_ole</a></li>
<li><a href="if_ruby.html">if_ruby</a></li>
<li><a href="debugger.html">debugger</a></li>
<li><a href="workshop.html">workshop</a></li>
<li><a href="netbeans.html">netbeans</a></li>
<li><a href="sign.html">sign</a></li>
</ul></dd>
<dt>Versions</dt>
<dd><ul>
<li><a href="vi_diff.html">vi_diff</a></li>
<li><a href="version4.html">version4</a></li>
<li><a href="version5.html">version5</a></li>
<li><a href="version6.html">version6</a></li>
<li><a href="version7.html">version7</a></li>
<li><a href="version8.html">version8</a></li>
</ul></dd>
<dt>Remarks about specific systems</dt>
<dd><ul>
<li><a href="os_390.html">os_390</a></li>
<li><a href="os_amiga.html">os_amiga</a></li>
<li><a href="os_beos.html">os_beos</a></li>
<li><a href="os_dos.html">os_dos</a></li>
<li><a href="os_mac.html">os_mac</a></li>
<li><a href="os_mint.html">os_mint</a></li>
<li><a href="os_msdos.html">os_msdos</a></li>
<li><a href="os_os2.html">os_os2</a></li>
<li><a href="os_qnx.html">os_qnx</a></li>
<li><a href="os_risc.html">os_risc</a></li>
<li><a href="os_unix.html">os_unix</a></li>
<li><a href="os_vms.html">os_vms</a></li>
<li><a href="os_win32.html">os_win32</a></li>
</ul></dd>
<dt>Standard plugins</dt>
<dd><ul>
<li><a href="pi_getscript.html">pi_getscript</a></li>
<li><a href="pi_gzip.html">pi_gzip</a></li>
<li><a href="pi_logipat.html">pi_logipat</a></li>
<li><a href="pi_netrw.html">pi_netrw</a></li>
<li><a href="pi_paren.html">pi_paren</a></li>
<li><a href="pi_tar.html">pi_tar</a></li>
<li><a href="pi_vimball.html">pi_vimball</a></li>
<li><a href="pi_zip.html">pi_zip</a></li>
</ul></dd>
<dt>Filetype plugins</dt>
<dd><ul>
<li><a href="pi_spec.html">pi_spec</a></li>
</ul></dd>
<dt>Others</dt>
<dd><ul>
<li><a href="vim_faq.html">vim_faq</a></li>
</ul></dd>
</dl>
</nav>
<article class="Vimdoc VimdocJa">
<div id='vimCodeElement'>
<a class="Constant" href="debug.html" name="debug.txt">debug.txt</a> For <span class="Identifier">Vim version 8.0.</span> Last change: 2017 Jul 15<br>
<br>
<br>
<span class="Identifier">VIM REFERENCE MANUAL by Bram Moolenaar</span><br>
<br>
<br>
Debugging Vim <a class="Constant" href="debug.html#debug-vim" name="debug-vim">debug-vim</a><br>
<br>
This is for debugging Vim itself, when it doesn't work properly.<br>
For debugging Vim scripts, functions, etc. see <a class="Identifier" href="repeat.html#debug-scripts">debug-scripts</a><br>
<br>
1. Location of a crash, using gcc and gdb <a class="Identifier" href="debug.html#debug-gcc">debug-gcc</a><br>
2. Locating memory leaks <a class="Identifier" href="debug.html#debug-leaks">debug-leaks</a><br>
3. Windows Bug Reporting <a class="Identifier" href="debug.html#debug-win32">debug-win32</a><br>
<br>
<span class="PreProc">==============================================================================</span><br>
<br>
1. Location of a crash, using gcc and gdb <a class="Constant" href="debug.html#debug-gcc" name="debug-gcc">debug-gcc</a> <a class="Constant" href="debug.html#gdb" name="gdb">gdb</a><br>
<br>
When Vim crashes in one of the test files, and you are using gcc for<br>
compilation, here is what you can do to find out exactly where Vim crashes.<br>
This also applies when using the MingW tools.<br>
<br>
1. Compile Vim with the "-g" option (there is a line in the src/Makefile for<br>
this, which you can uncomment). Also make sure "strip" is disabled (do not<br>
install it, or use the line "STRIP = /bin/true").<br>
<br>
2. Execute these commands (replace "11" with the test that fails):<br>
<div class="helpExample"> cd testdir<br>
gdb ../vim<br>
run -u unix.vim -U NONE -s dotest.in test11.in</div>
<br>
3. Check where Vim crashes, gdb should give a message for this.<br>
<br>
4. Get a stack trace from gdb with this command:<br>
<div class="helpExample"> where</div>
You can check out different places in the stack trace with:<br>
<div class="helpExample"> frame 3</div>
Replace "3" with one of the numbers in the stack trace.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
<br>
2. Locating memory leaks <a class="Constant" href="debug.html#debug-leaks" name="debug-leaks">debug-leaks</a> <a class="Constant" href="debug.html#valgrind" name="valgrind">valgrind</a><br>
<br>
If you suspect Vim is leaking memory and you are using Linux, the valgrind<br>
tool is very useful to pinpoint memory leaks.<br>
<br>
First of all, build Vim with EXITFREE defined. Search for this in MAKEFILE<br>
and uncomment the line.<br>
<br>
Use this command to start Vim:<br>
<br>
<div class="helpExample"> valgrind --log-file=valgrind.log --leak-check=full ./vim</div>
<br>
<span class="Todo">Note</span>: Vim will run much slower. If your .vimrc is big or you have several<br>
plugins you need to be patient for startup, or run with the "--clean"<br>
argument.<br>
<br>
There are often a few leaks from libraries, such as getpwuid() and<br>
XtVaAppCreateShell(). Those are unavoidable. The number of bytes should be<br>
very small a Kbyte or less.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
<br>
3. Windows Bug Reporting <a class="Constant" href="debug.html#debug-win32" name="debug-win32">debug-win32</a><br>
<br>
If the Windows version of Vim crashes in a reproducible manner, you can take<br>
some steps to provide a useful bug report.<br>
<br>
<br>
<span class="PreProc">3.1 GENERIC</span><br>
<br>
You must obtain the debugger symbols (PDB) file for your executable: gvim.pdb<br>
for gvim.exe, or vim.pdb for vim.exe. The PDB should be available from the<br>
same place that you obtained the executable. Be sure to use the PDB that<br>
matches the EXE (same date).<br>
<br>
If you built the executable yourself with the Microsoft Visual C++ compiler,<br>
then the PDB was built with the EXE.<br>
<br>
Alternatively, if you have the source files, you can import Make_ivc.mak into<br>
Visual Studio as a workspace. Then select a debug configuration, build and<br>
you can do all kinds of debugging (set breakpoints, watch variables, etc.).<br>
<br>
If you have Visual Studio, use that instead of the VC Toolkit and WinDbg.<br>
<br>
For other compilers, you should always use the corresponding debugger: TD for<br>
a Vim executable compiled with the Borland compiler; gdb (see above<br>
<a class="Identifier" href="debug.html#debug-gcc">debug-gcc</a>) for the Cygwin and MinGW compilers.<br>
<br>
<br>
<a class="Constant" href="debug.html#debug-vs2005" name="debug-vs2005">debug-vs2005</a><br>
<span class="PreProc">3.2 Debugging Vim crashes with Visual Studio 2005/Visual C++ 2005 Express</span><br>
<br>
First launch vim.exe or gvim.exe and then launch Visual Studio. (If you don't<br>
have Visual Studio, follow the instructions at <a class="Identifier" href="debug.html#get-ms-debuggers">get-ms-debuggers</a> to obtain a<br>
free copy of Visual C++ 2005 Express Edition.)<br>
<br>
On the Tools menu, click Attach to Process. Choose the Vim process.<br>
<br>
In Vim, reproduce the crash. A dialog will appear in Visual Studio, telling<br>
you about the unhandled exception in the Vim process. Click Break to break<br>
into the process.<br>
<br>
Visual Studio will pop up another dialog, telling you that no symbols are<br>
loaded and that the source code cannot be displayed. Click OK.<br>
<br>
Several windows will open. Right-click in the Call Stack window. Choose Load<br>
Symbols. The Find Symbols dialog will open, looking for (g)vim.pdb. Navigate<br>
to the directory where you have the PDB file and click Open.<br>
<br>
At this point, you should have a full call stack with vim function names and<br>
line numbers. Double-click one of the lines and the Find Source dialog will<br>
appear. Navigate to the directory where the Vim source is (if you have it.)<br>
<br>
If you don't know how to debug this any further, follow the instructions<br>
at ":help bug-reports". Paste the call stack into the bug report.<br>
<br>
If you have a non-free version of Visual Studio, you can save a minidump via<br>
the Debug menu and send it with the bug report. A minidump is a small file<br>
(<100KB), which contains information about the state of your process.<br>
Visual C++ 2005 Express Edition cannot save minidumps and it cannot be<br>
installed as a just-in-time debugger. Use WinDbg, <a class="Identifier" href="debug.html#debug-windbg">debug-windbg</a>, if you<br>
need to save minidumps or you want a just-in-time (postmortem) debugger.<br>
<br>
<a class="Constant" href="debug.html#debug-windbg" name="debug-windbg">debug-windbg</a><br>
<span class="PreProc">3.3 Debugging Vim crashes with WinDbg</span><br>
<br>
See <a class="Identifier" href="debug.html#get-ms-debuggers">get-ms-debuggers</a> to obtain a copy of WinDbg.<br>
<br>
As with the Visual Studio IDE, you can attach WinDbg to a running Vim process.<br>
You can also have your system automatically invoke WinDbg as a postmortem<br>
debugger. To set WinDbg as your postmortem debugger, run "windbg -I".<br>
<br>
To attach WinDbg to a running Vim process, launch WinDbg. On the File menu,<br>
choose Attach to a Process. Select the Vim process and click OK.<br>
<br>
At this point, choose Symbol File Path on the File menu, and add the folder<br>
containing your Vim PDB to the sympath. If you have Vim source available,<br>
use Source File Path on the File menu. You can now open source files in WinDbg<br>
and set breakpoints, if you like. Reproduce your crash. WinDbg should open the<br>
source file at the point of the crash. Using the View menu, you can examine<br>
the call stack, local variables, watch windows, and so on.<br>
<br>
If WinDbg is your postmortem debugger, you do not need to attach WinDbg to<br>
your Vim process. Simply reproduce the crash and WinDbg will launch<br>
automatically. As above, set the Symbol File Path and the Source File Path.<br>
<br>
To save a minidump, type the following at the WinDbg command line:<br>
<div class="helpExample"> .dump vim.dmp</div>
<br>
<a class="Constant" href="debug.html#debug-minidump" name="debug-minidump">debug-minidump</a><br>
<span class="PreProc">3.4 Opening a Minidump</span><br>
<br>
If you have a minidump file, you can open it in Visual Studio or in WinDbg.<br>
<br>
In Visual Studio 2005: on the File menu, choose Open, then Project/Solution.<br>
Navigate to the .dmp file and open it. Now press F5 to invoke the debugger.<br>
Follow the instructions in <a class="Identifier" href="debug.html#debug-vs2005">debug-vs2005</a> to set the Symbol File Path.<br>
<br>
In WinDbg: choose Open Crash Dump on the File menu. Follow the instructions in<br>
<a class="Identifier" href="debug.html#debug-windbg">debug-windbg</a> to set the Symbol File Path.<br>
<br>
<a class="Constant" href="debug.html#get-ms-debuggers" name="get-ms-debuggers">get-ms-debuggers</a><br>
<span class="PreProc">3.5 Obtaining Microsoft Debugging Tools</span><br>
<br>
The Debugging Tools for Windows (including WinDbg) can be downloaded from<br>
<span class="Constant"><a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">http://www.microsoft.com/whdc/devtools/debugging/default.mspx</a></span><br>
This includes the WinDbg debugger.<br>
<br>
Visual C++ 2005 Express Edition can be downloaded for free from:<br>
<span class="Constant"><a href="http://msdn.microsoft.com/vstudio/express/visualC/default.aspx">http://msdn.microsoft.com/vstudio/express/visualC/default.aspx</a></span><br>
<br>
<span class="PreProc">=========================================================================</span><br>
vim:tw=78:ts=8:ft=help:norl:<br>
</div>
</article>
<footer>
<a href="#top">Return to the top</a> - <a href="index.html">Return to main</a>
<span class="EnglishJapaneseLink">
<span class="CurrentLanguage">English</span>
</span>
<br />
<div style="text-align:right;">
Hosted by <a href="https://github.com/vim-jp/vimdoc-en">vimdoc-en project</a><br />
If you met any problem, please report it to <a href="https://github.com/vim-jp/vimdoc-en/issues">issue</a>.<br />
</div>
</footer>
<!--<script src="js/check-referrer.js" type="text/javascript"></script>-->
</body>
</html>
<!-- vim:set ts=8 sts=2 sw=2 tw=0 et: -->
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。