Permalink
Browse files

patch 8.0.1599: no error message when gdb does not support debugger

Problem:    No error message when gdb does not support the terminal debugger.
Solution:   Check for the response to open the Machine Interface.
  • Loading branch information...
brammool committed Mar 11, 2018
1 parent c48369c commit 3e4b84d0b55936ac017d20df6651ddd05e38f58f
Showing with 33 additions and 1 deletion.
  1. +31 −1 runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
  2. +2 −0 src/version.c
@@ -105,9 +105,39 @@ func s:StartDebug(cmd)
let s:gdbwin = win_getid(winnr())
" Connect gdb to the communication pty, using the GDB/MI interface
" If you get an error "undefined command" your GDB is too old.
call term_sendkeys(s:gdbbuf, 'new-ui mi ' . commpty . "\r")
" Wait for the response to show up, users may not notice the error and wonder
" why the debugger doesn't work.
let try_count = 0
while 1
let response = ''
for lnum in range(1,20)
if term_getline(s:gdbbuf, lnum) =~ 'new-ui mi '
let response = term_getline(s:gdbbuf, lnum + 1)
if response =~ 'Undefined command'
echoerr 'Your gdb does not support the Machine Interface feature'
exe 'bwipe! ' . s:ptybuf
exe 'bwipe! ' . s:commbuf
return
endif
if response =~ 'New UI allocated'
" Success!
break
endif
endif
endfor
if response =~ 'New UI allocated'
break
endif
let try_count += 1
if try_count > 100
echoerr 'Cannot check if your gdb works, continuing anyway'
break
endif
sleep 10m
endwhile
" Interpret commands while the target is running. This should usualy only be
" exec-interrupt, since many commands don't work properly while the target is
" running.
@@ -766,6 +766,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1599,
/**/
1598,
/**/

0 comments on commit 3e4b84d

Please sign in to comment.