1
0
forked from aniani/vim

patch 8.1.0080: can't see the breakpoint number in the terminal debugger

Problem:    Can't see the breakpoint number in the terminal debugger.
Solution:   Use the breakpoint number for the sign. (Christian Brabandt)
This commit is contained in:
Bram Moolenaar 2018-06-19 16:59:54 +02:00
parent 8df6e5d467
commit de1a83147a
3 changed files with 35 additions and 11 deletions

View File

@ -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 ~

View File

@ -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

View File

@ -761,6 +761,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
80,
/**/
79,
/**/