mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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:
parent
8df6e5d467
commit
de1a83147a
@ -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: >
|
Vim will start running in the program window. Put focus there and type: >
|
||||||
:help gui
|
:help gui
|
||||||
Gdb will run into the ex_help breakpoint. The source window now shows the
|
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
|
ex_cmds.c file. A red "1 " marker will appear in the signcolumn where the
|
||||||
line where the debugger stopped is highlighted. You can now step through the
|
breakpoint was set. The line where the debugger stopped is highlighted. You
|
||||||
program. Let's use the mouse: click on the "Next" button in the window
|
can now step through the program. Let's use the mouse: click on the "Next"
|
||||||
toolbar. You will see the highlighting move as the debugger executes a line
|
button in the window toolbar. You will see the highlighting move as the
|
||||||
of source code.
|
debugger executes a line of source code.
|
||||||
|
|
||||||
Click "Next" a few times until the for loop is highlighted. Put the cursor on
|
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
|
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
|
happens if the buffer in the source code window has been modified and can't be
|
||||||
abandoned.
|
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 ~
|
Inspecting variables ~
|
||||||
*termdebug-variables* *:Evaluate*
|
*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
|
gdb. The buffer name is "gdb communication". Do not delete this buffer, it
|
||||||
will break the debugger.
|
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 ~
|
Customizing ~
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ if !exists('termdebugger')
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let s:pc_id = 12
|
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
|
let s:stopped = 1
|
||||||
|
|
||||||
if &background == 'light'
|
if &background == 'light'
|
||||||
@ -325,10 +325,6 @@ func s:StartDebugCommon(dict)
|
|||||||
" There can be only one.
|
" There can be only one.
|
||||||
sign define debugPC linehl=debugPC
|
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.
|
" Install debugger commands in the text window.
|
||||||
call win_gotoid(s:sourcewin)
|
call win_gotoid(s:sourcewin)
|
||||||
call s:InstallCommands()
|
call s:InstallCommands()
|
||||||
@ -345,6 +341,7 @@ func s:StartDebugCommon(dict)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Contains breakpoints that have been placed, key is the number.
|
||||||
let s:breakpoints = {}
|
let s:breakpoints = {}
|
||||||
|
|
||||||
augroup TermDebug
|
augroup TermDebug
|
||||||
@ -813,6 +810,16 @@ func s:HandleCursor(msg)
|
|||||||
call win_gotoid(wid)
|
call win_gotoid(wid)
|
||||||
endfunc
|
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
|
" Handle setting a breakpoint
|
||||||
" Will update the sign that shows the breakpoint
|
" Will update the sign that shows the breakpoint
|
||||||
func s:HandleNewBreakpoint(msg)
|
func s:HandleNewBreakpoint(msg)
|
||||||
@ -820,6 +827,7 @@ func s:HandleNewBreakpoint(msg)
|
|||||||
if nr == 0
|
if nr == 0
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
call s:CreateBreakpoint(nr)
|
||||||
|
|
||||||
if has_key(s:breakpoints, nr)
|
if has_key(s:breakpoints, nr)
|
||||||
let entry = s:breakpoints[nr]
|
let entry = s:breakpoints[nr]
|
||||||
@ -839,7 +847,7 @@ func s:HandleNewBreakpoint(msg)
|
|||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func s:PlaceSign(nr, entry)
|
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
|
let a:entry['placed'] = 1
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@ -761,6 +761,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
80,
|
||||||
/**/
|
/**/
|
||||||
79,
|
79,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user