Add support for multiple versions of debuggers
This commit is contained in:
parent
b0be0c92b7
commit
5036961da9
@ -6,7 +6,7 @@ function! vebugger#gdb#searchAndAttach(binaryFile)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! vebugger#gdb#start(binaryFile,args)
|
function! vebugger#gdb#start(binaryFile,args)
|
||||||
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('gdb','gdb'))
|
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('gdb',get(a:args,'version'),'gdb'))
|
||||||
\.' -i mi --silent '.fnameescape(a:binaryFile))
|
\.' -i mi --silent '.fnameescape(a:binaryFile))
|
||||||
let l:debugger.state.gdb={}
|
let l:debugger.state.gdb={}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
function! vebugger#jdb#start(entryClass,args)
|
function! vebugger#jdb#start(entryClass,args)
|
||||||
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('jdb','jdb'))
|
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('jdb',get(a:args,'version'),'jdb'))
|
||||||
\.(has_key(a:args,'classpath') ? ' -classpath '.fnameescape(a:args.classpath) : ''))
|
\.(has_key(a:args,'classpath') ? ' -classpath '.fnameescape(a:args.classpath) : ''))
|
||||||
let l:debugger.state.jdb={}
|
let l:debugger.state.jdb={}
|
||||||
if has_key(a:args,'srcpath')
|
if has_key(a:args,'srcpath')
|
||||||
|
@ -6,7 +6,7 @@ function! vebugger#mdbg#searchAndAttach(binaryFile,srcpath)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! vebugger#mdbg#start(binaryFile,args)
|
function! vebugger#mdbg#start(binaryFile,args)
|
||||||
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('mdbg','Mdbg')))
|
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('mdbg',get(a:args,'version'),'Mdbg')))
|
||||||
let l:debugger.state.mdbg={'breakpointNumbers':{}}
|
let l:debugger.state.mdbg={'breakpointNumbers':{}}
|
||||||
let l:debugger.readResultTemplate.mdbg={'breakpointBound':{}}
|
let l:debugger.readResultTemplate.mdbg={'breakpointBound':{}}
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
function! vebugger#pdb#start(entryFile,args)
|
function! vebugger#pdb#start(entryFile,args)
|
||||||
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('python','python'))
|
let l:debuggerExe=vebugger#util#getToolFullPath('python',get(a:args,'version'),{
|
||||||
|
\' ':'python',
|
||||||
|
\'2':'python2',
|
||||||
|
\'3':'python3'})
|
||||||
|
let l:debugger=vebugger#std#startDebugger(shellescape(l:debuggerExe)
|
||||||
\.' -m pdb '.a:entryFile.' '.vebugger#util#commandLineArgsForProgram(a:args))
|
\.' -m pdb '.a:entryFile.' '.vebugger#util#commandLineArgsForProgram(a:args))
|
||||||
|
|
||||||
let l:debugger.state.pdb={}
|
let l:debugger.state.pdb={}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
function! vebugger#rdebug#start(entryFile,args)
|
function! vebugger#rdebug#start(entryFile,args)
|
||||||
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('ruby','ruby'))
|
let l:debugger=vebugger#std#startDebugger(shellescape(vebugger#util#getToolFullPath('ruby',get(a:args,'version'),'ruby'))
|
||||||
\.' -rdebug '.a:entryFile.' '.vebugger#util#commandLineArgsForProgram(a:args))
|
\.' -rdebug '.a:entryFile.' '.vebugger#util#commandLineArgsForProgram(a:args))
|
||||||
let l:debugger.state.rdebug={}
|
let l:debugger.state.rdebug={}
|
||||||
let l:debugger.state.std.config.externalFileStop_flowCommand='stepover' "skip external modules
|
let l:debugger.state.std.config.externalFileStop_flowCommand='stepover' "skip external modules
|
||||||
|
@ -86,12 +86,23 @@ endfunction
|
|||||||
|
|
||||||
"Return a tool's(usually debugger) full path, or revert to default if that
|
"Return a tool's(usually debugger) full path, or revert to default if that
|
||||||
"path is not defined
|
"path is not defined
|
||||||
function! vebugger#util#getToolFullPath(toolName,default)
|
function! vebugger#util#getToolFullPath(toolName,version,default)
|
||||||
let l:optionName='vebugger_path_'.a:toolName
|
let l:optionName='vebugger_path_'.a:toolName
|
||||||
|
if !empty(a:version)
|
||||||
|
let l:optionName=l:optionName.'_'.a:version
|
||||||
|
endif
|
||||||
if exists('g:'.l:optionName)
|
if exists('g:'.l:optionName)
|
||||||
return g:[l:optionName]
|
return g:[l:optionName]
|
||||||
else
|
else
|
||||||
return a:default
|
if type({})==type(a:default)
|
||||||
|
if !empty(a:version) && has_key(a:default,a:version)
|
||||||
|
return a:default[a:version]
|
||||||
|
else
|
||||||
|
return a:default[' ']
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
return a:default
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -85,6 +85,15 @@ g:vebugger_path_XXX, where XXX is the executable used for the debugger:
|
|||||||
Notice that for PDB and RDebug you use "python" and "ruby", since the debugger
|
Notice that for PDB and RDebug you use "python" and "ruby", since the debugger
|
||||||
is actually a module bundled in the interpreter.
|
is actually a module bundled in the interpreter.
|
||||||
|
|
||||||
|
You can set multiple versions for each debugger, by appending the version name
|
||||||
|
to the debugger name with "_". These versions will be used when the "version"
|
||||||
|
argument is supplied when running the debugger:
|
||||||
|
|
||||||
|
*g:vebugger_path_python_2* defaults to "python2"
|
||||||
|
*g:vebugger_path_python_3* defaults to "python3"
|
||||||
|
*g:vebugger_path_mdbg_32* No default - use it for the 32bit version of Mdbg
|
||||||
|
*g:vebugger_path_mdbg_64* No default - use it for the 64bit version of Mdbg
|
||||||
|
|
||||||
LAUNCHING DEBUGGERS *vebugger-launching*
|
LAUNCHING DEBUGGERS *vebugger-launching*
|
||||||
|
|
||||||
A debugger's implementation is responsible for starting it. The standard is to
|
A debugger's implementation is responsible for starting it. The standard is to
|
||||||
@ -108,7 +117,8 @@ GDB can be launched with *vebuger#gdb#start*
|
|||||||
The supported extra arguments are:
|
The supported extra arguments are:
|
||||||
* "args": Command line arguments for the debugged program
|
* "args": Command line arguments for the debugged program
|
||||||
* "pid": Process id to attach to
|
* "pid": Process id to attach to
|
||||||
* "entry": The entry
|
* "entry": The entry point for starting the debugging(default "main")
|
||||||
|
* "version": The version of the debugger to run
|
||||||
You can't specify both ("args" and/or "entry") and "pid".
|
You can't specify both ("args" and/or "entry") and "pid".
|
||||||
|
|
||||||
GDB can also be launched with the *VBGstartGDB* command:
|
GDB can also be launched with the *VBGstartGDB* command:
|
||||||
@ -137,6 +147,7 @@ file - it's the name of the class to run. The supported extra arguments are:
|
|||||||
* "args": Command line arguments for the debugged program
|
* "args": Command line arguments for the debugged program
|
||||||
* "classpath": Where to look for class files
|
* "classpath": Where to look for class files
|
||||||
* "srcpath": Where to look for source files
|
* "srcpath": Where to look for source files
|
||||||
|
* "version": The version of the debugger to run
|
||||||
If you don't supply "classpath" and "srcpath", Vebugger will assume you are
|
If you don't supply "classpath" and "srcpath", Vebugger will assume you are
|
||||||
using the current directory for source files and class files.
|
using the current directory for source files and class files.
|
||||||
|
|
||||||
@ -152,6 +163,7 @@ RDebug is launched with *vebugger#rdebug#start*
|
|||||||
<
|
<
|
||||||
The supported extra arguments are:
|
The supported extra arguments are:
|
||||||
* "args": Command line arguments for the debugged script
|
* "args": Command line arguments for the debugged script
|
||||||
|
* "version": The version of the debugger to run
|
||||||
|
|
||||||
RDebug can also be launched with the *VBGstartRDebug* command:
|
RDebug can also be launched with the *VBGstartRDebug* command:
|
||||||
>
|
>
|
||||||
@ -166,12 +178,19 @@ PDB is launched with *vebugger#pdb#start*
|
|||||||
<
|
<
|
||||||
The supported extra arguments are:
|
The supported extra arguments are:
|
||||||
* "args": Command line arguments for the debugged script
|
* "args": Command line arguments for the debugged script
|
||||||
|
* "version": The version of the debugger to run
|
||||||
|
|
||||||
PDB can also be launched with the *VBGstartPDB* command:
|
PDB can also be launched with the *VBGstartPDB* command:
|
||||||
>
|
>
|
||||||
VBGstartPDB script.py hello world
|
VBGstartPDB script.py hello world
|
||||||
<
|
<
|
||||||
|
|
||||||
|
There are also commands to specify if you want to use python2 or python3:
|
||||||
|
>
|
||||||
|
VBGstartPDB2 script.py hello world
|
||||||
|
VBGstartPDB3 script.py hello world
|
||||||
|
<
|
||||||
|
|
||||||
LAUNCHING MDBG *vebugger-mdbg*
|
LAUNCHING MDBG *vebugger-mdbg*
|
||||||
|
|
||||||
Mdbg is launched with *vebugger#mdbg#start*
|
Mdbg is launched with *vebugger#mdbg#start*
|
||||||
@ -186,6 +205,7 @@ The supported extra arguments are:
|
|||||||
* "noConsole": If non-zero, do not open a console for the debugged program
|
* "noConsole": If non-zero, do not open a console for the debugged program
|
||||||
* "args": Command line arguments for the debugged program
|
* "args": Command line arguments for the debugged program
|
||||||
* "pid": Process id to attach to
|
* "pid": Process id to attach to
|
||||||
|
* "version": The version of the debugger to run
|
||||||
If you specify "pid", you can't specify "args" and/or "noConsole".
|
If you specify "pid", you can't specify "args" and/or "noConsole".
|
||||||
|
|
||||||
If you don't supply "srcpath", Vebugger will assume you are
|
If you don't supply "srcpath", Vebugger will assume you are
|
||||||
|
@ -25,6 +25,8 @@ command! -nargs=+ -complete=file VBGstartGDB call vebugger#gdb#start([<f-args>][
|
|||||||
command! -nargs=1 -complete=file VBGattachGDB call vebugger#gdb#searchAndAttach(<q-args>)
|
command! -nargs=1 -complete=file VBGattachGDB call vebugger#gdb#searchAndAttach(<q-args>)
|
||||||
command! -nargs=+ -complete=file VBGstartRDebug call vebugger#rdebug#start([<f-args>][0],{'args':[<f-args>][1:]})
|
command! -nargs=+ -complete=file VBGstartRDebug call vebugger#rdebug#start([<f-args>][0],{'args':[<f-args>][1:]})
|
||||||
command! -nargs=+ -complete=file VBGstartPDB call vebugger#pdb#start([<f-args>][0],{'args':[<f-args>][1:]})
|
command! -nargs=+ -complete=file VBGstartPDB call vebugger#pdb#start([<f-args>][0],{'args':[<f-args>][1:]})
|
||||||
|
command! -nargs=+ -complete=file VBGstartPDB2 call vebugger#pdb#start([<f-args>][0],{'args':[<f-args>][1:],'version':'2'})
|
||||||
|
command! -nargs=+ -complete=file VBGstartPDB3 call vebugger#pdb#start([<f-args>][0],{'args':[<f-args>][1:],'version':'3'})
|
||||||
command! -nargs=+ -complete=file VBGstartGDBForD call vebugger#gdb#start([<f-args>][0],{'args':[<f-args>][1:],'entry':'_Dmain'})
|
command! -nargs=+ -complete=file VBGstartGDBForD call vebugger#gdb#start([<f-args>][0],{'args':[<f-args>][1:],'entry':'_Dmain'})
|
||||||
|
|
||||||
if exists('g:vebugger_leader')
|
if exists('g:vebugger_leader')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user