changeset 13682:fc660a6ef37d v8.0.1713

patch 8.0.1713: terminal debugger doesn't handle arguments commit https://github.com/vim/vim/commit/b3623a382abc8f8e2bcfba4c1a2aa06b7578eb8d Author: Bram Moolenaar <Bram@vim.org> Date: Sat Apr 14 18:59:50 2018 +0200 patch 8.0.1713: terminal debugger doesn't handle arguments Problem: Terminal debugger doesn't handle arguments. Solution: Use <f-args> and pass all the arguments to gdb, e.g. the core file or process number. (suggested by Christian Brabandt) Disallow starting the debugger twice.
author Christian Brabandt <cb@256bit.org>
date Sat, 14 Apr 2018 19:00:07 +0200
parents cea7c555bd3e
children 71eeadf55d78
files runtime/doc/terminal.txt runtime/pack/dist/opt/termdebug/plugin/termdebug.vim src/version.c
diffstat 3 files changed, 20 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -649,6 +649,13 @@ the same as any command running in a ter
 When the debugger ends, typically by typing "quit" in the gdb window, the two
 opened windows are closed.
 
+Only one debugger can be active at a time.
+
+To attach gdb to an already running executable, or use a core file, pass extra
+arguments.  E.g.: >
+	:Termdebug vim core
+	:Termdebug vim 98343
+
 
 Example session ~
 							*termdebug-example*
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -25,7 +25,7 @@ endif
 
 " The command that starts debugging, e.g. ":Termdebug vim".
 " To end type "quit" in the gdb window.
-command -nargs=* -complete=file Termdebug call s:StartDebug(<q-args>)
+command -nargs=* -complete=file Termdebug call s:StartDebug(<f-args>)
 
 " Name of the gdb command, defaults to "gdb".
 if !exists('termdebugger')
@@ -43,7 +43,12 @@ else
 endif
 hi default debugBreakpoint term=reverse ctermbg=red guibg=red
 
-func s:StartDebug(cmd)
+func s:StartDebug(...)
+  if exists('s:gdbwin')
+    echoerr 'Terminal debugger already running'
+    return
+  endif
+
   let s:startwin = win_getid(winnr())
   let s:startsigncolumn = &signcolumn
 
@@ -90,7 +95,7 @@ func s:StartDebug(cmd)
 
   " Open a terminal window to run the debugger.
   " Add -quiet to avoid the intro message causing a hit-enter prompt.
-  let cmd = [g:termdebugger, '-quiet', '-tty', pty, a:cmd]
+  let cmd = [g:termdebugger, '-quiet', '-tty', pty] + a:000
   echomsg 'executing "' . join(cmd) . '"'
   let s:gdbbuf = term_start(cmd, {
 	\ 'exit_cb': function('s:EndDebug'),
@@ -112,7 +117,7 @@ func s:StartDebug(cmd)
   let try_count = 0
   while 1
     let response = ''
-    for lnum in range(1,20)
+    for lnum in range(1,200)
       if term_getline(s:gdbbuf, lnum) =~ 'new-ui mi '
 	let response = term_getline(s:gdbbuf, lnum + 1)
 	if response =~ 'Undefined command'
@@ -182,6 +187,7 @@ endfunc
 func s:EndDebug(job, status)
   exe 'bwipe! ' . s:ptybuf
   exe 'bwipe! ' . s:commbuf
+  unlet s:gdbwin
 
   let curwinid = win_getid(winnr())
 
@@ -295,6 +301,7 @@ func s:DeleteCommands()
   delcommand Evaluate
   delcommand Gdb
   delcommand Program
+  delcommand Source
   delcommand Winbar
 
   nunmap K
--- a/src/version.c
+++ b/src/version.c
@@ -763,6 +763,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1713,
+/**/
     1712,
 /**/
     1711,