summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-06-19 16:59:54 +0200
committerBram Moolenaar <Bram@vim.org>2018-06-19 16:59:54 +0200
commitde1a83147a28d3db8f9fca415ffc8fa04218eac2 (patch)
tree3def157cf0b870976060aa059ed4224f12ab2083
parent8df6e5d4670891608e791244b0c2ec0db387f710 (diff)
downloadvim-git-de1a83147a28d3db8f9fca415ffc8fa04218eac2.tar.gz
patch 8.1.0080: can't see the breakpoint number in the terminal debuggerv8.1.0080
Problem: Can't see the breakpoint number in the terminal debugger. Solution: Use the breakpoint number for the sign. (Christian Brabandt)
-rw-r--r--runtime/doc/terminal.txt24
-rw-r--r--runtime/pack/dist/opt/termdebug/plugin/termdebug.vim20
-rw-r--r--src/version.c2
3 files changed, 35 insertions, 11 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 395e7d287..262b162ad 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -705,11 +705,11 @@ Put focus on the gdb window and type: >
Vim will start running in the program window. Put focus there and type: >
:help gui
Gdb will run into the ex_help breakpoint. The source window now shows the
-ex_cmds.c file. A ">>" marker will appear where the breakpoint was set. The
-line where the debugger stopped is highlighted. You can now step through the
-program. Let's use the mouse: click on the "Next" button in the window
-toolbar. You will see the highlighting move as the debugger executes a line
-of source code.
+ex_cmds.c file. A red "1 " marker will appear in the signcolumn where the
+breakpoint was set. The line where the debugger stopped is highlighted. You
+can now step through the program. Let's use the mouse: click on the "Next"
+button in the window toolbar. You will see the highlighting move as the
+debugger executes a line of source code.
Click "Next" a few times until the for loop is highlighted. Put the cursor on
the end of "eap->arg", then click "Eval" in the toolbar. You will see this
@@ -788,6 +788,13 @@ source code, a new window will be created for the source code. This also
happens if the buffer in the source code window has been modified and can't be
abandoned.
+Gdb gives each breakpoint a number. In Vim the number shows up in the sign
+column, with a red background. You can use these gdb commands:
+- info break list breakpoints
+- delete N delete breakpoint N
+You can also use the `:Clear` command if the cursor is in the line with the
+breakpoint, or use the "Clear breakpoint" right-click menu entry.
+
Inspecting variables ~
*termdebug-variables* *:Evaluate*
@@ -831,6 +838,13 @@ There is another, hidden, buffer, which is used for Vim to communicate with
gdb. The buffer name is "gdb communication". Do not delete this buffer, it
will break the debugger.
+Gdb has some weird behavior, the plugin does its best to work around that.
+For example, after typing "continue" in the gdb window a CTRL-C can be used to
+interrupt the running program. But after using the MI command
+"-exec-continue" pressing CTRL-C does not interrupt. Therefore you will see
+"continue" being used for the `:Continue` command, instead of using the
+communication channel.
+
Customizing ~
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index a01f3f1c7..f4a4dc224 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -67,7 +67,7 @@ if !exists('termdebugger')
endif
let s:pc_id = 12
-let s:break_id = 13
+let s:break_id = 13 " breakpoint number is added to this
let s:stopped = 1
if &background == 'light'
@@ -325,10 +325,6 @@ func s:StartDebugCommon(dict)
" There can be only one.
sign define debugPC linehl=debugPC
- " Sign used to indicate a breakpoint.
- " Can be used multiple times.
- sign define debugBreakpoint text=>> texthl=debugBreakpoint
-
" Install debugger commands in the text window.
call win_gotoid(s:sourcewin)
call s:InstallCommands()
@@ -345,6 +341,7 @@ func s:StartDebugCommon(dict)
endif
endif
+ " Contains breakpoints that have been placed, key is the number.
let s:breakpoints = {}
augroup TermDebug
@@ -813,6 +810,16 @@ func s:HandleCursor(msg)
call win_gotoid(wid)
endfunc
+func s:CreateBreakpoint(nr)
+ if !exists("s:BreakpointSigns")
+ let s:BreakpointSigns = []
+ endif
+ if index(s:BreakpointSigns, a:nr) == -1
+ call add(s:BreakpointSigns, a:nr)
+ exe "sign define debugBreakpoint". a:nr . " text=" . a:nr . " texthl=debugBreakpoint"
+ endif
+endfunc
+
" Handle setting a breakpoint
" Will update the sign that shows the breakpoint
func s:HandleNewBreakpoint(msg)
@@ -820,6 +827,7 @@ func s:HandleNewBreakpoint(msg)
if nr == 0
return
endif
+ call s:CreateBreakpoint(nr)
if has_key(s:breakpoints, nr)
let entry = s:breakpoints[nr]
@@ -839,7 +847,7 @@ func s:HandleNewBreakpoint(msg)
endfunc
func s:PlaceSign(nr, entry)
- exe 'sign place ' . (s:break_id + a:nr) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint file=' . a:entry['fname']
+ exe 'sign place ' . (s:break_id + a:nr) . ' line=' . a:entry['lnum'] . ' name=debugBreakpoint' . a:nr . ' file=' . a:entry['fname']
let a:entry['placed'] = 1
endfunc
diff --git a/src/version.c b/src/version.c
index 85ffd1617..ebcc4efc7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 80,
+/**/
79,
/**/
78,