Displaying exceptions in JDB
This commit is contained in:
parent
c51b7f0b10
commit
59f55a62be
@ -5,6 +5,7 @@ function! vebugger#gdb#start(binaryFile,args)
|
||||
\: 'gdb '.fnameescape(a:binaryFile)))
|
||||
let l:debugger.state.gdb={}
|
||||
|
||||
call l:debugger.writeLine("set width 0")
|
||||
call l:debugger.writeLine("define hook-stop\nwhere\nend")
|
||||
call l:debugger.writeLine("start")
|
||||
|
||||
|
@ -19,6 +19,7 @@ function! vebugger#jdb#start(entryClass,args)
|
||||
call l:debugger.writeLine('monitor where')
|
||||
|
||||
call l:debugger.addReadHandler(function('s:readWhere'))
|
||||
call l:debugger.addReadHandler(function('s:readException'))
|
||||
call l:debugger.addReadHandler(function('s:readEvaluatedExpressions'))
|
||||
|
||||
call l:debugger.setWriteHandler('std','flow',function('s:writeFlow'))
|
||||
@ -65,6 +66,16 @@ function! s:readWhere(pipeName,line,readResult,debugger)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:readException(pipeName,line,readResult,debugger)
|
||||
if 'out'==a:pipeName
|
||||
let l:matches=matchlist(a:line,'\vException occurred:\s+(\S+)')
|
||||
if 1<len(l:matches)
|
||||
let a:readResult.std.exception={
|
||||
\'message':(l:matches[1])}
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:writeFlow(writeAction,debugger)
|
||||
if 'stepin'==a:writeAction
|
||||
call a:debugger.writeLine('step')
|
||||
|
@ -12,7 +12,8 @@ function! vebugger#std#setStandardReadResultTemplate(debugger)
|
||||
\'location':{},
|
||||
\'callstack':{},
|
||||
\'evaluatedExpression':{},
|
||||
\'programFinish':{}}
|
||||
\'programFinish':{},
|
||||
\'exception':{}}
|
||||
endfunction
|
||||
|
||||
function! vebugger#std#setStandardWriteactionsTemplate(debugger)
|
||||
@ -134,6 +135,14 @@ function! s:standardThinkHandlers.closeDebuggerWhenProgramFinishes(readResult,de
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:standardThinkHandlers.printException(readResult,debugger) dict
|
||||
if !empty(a:readResult.std.exception)
|
||||
echohl WarningMsg
|
||||
echo a:readResult.std.exception.message."\n"
|
||||
echohl None
|
||||
endif
|
||||
endfunction
|
||||
|
||||
let s:standardCloseHandlers={}
|
||||
function! s:standardCloseHandlers.removeCurrentMarker(debugger) dict
|
||||
let a:debugger.state.std.location={}
|
||||
@ -156,7 +165,6 @@ function! vebugger#std#updateMarksForFile(state,filename)
|
||||
if !empty(a:state)
|
||||
if !empty(a:state.std.location)
|
||||
if a:state.std.location.file==a:filename
|
||||
echo l:filename
|
||||
exe 'sign place 1 name=vebugger_current line='.a:state.std.location.line.' file='.fnameescape(l:filename)
|
||||
endif
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user