vim-patch:8.2.2996: Vim9: when debugging cannot inspect local variables

Problem:    Vim9: when debugging cannot inspect local variables.
Solution:   Make local variables available when debugging.

b69c6fb7b4

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq 2023-11-13 06:35:42 +08:00
parent 5ce3b89ff3
commit 04d951685b
2 changed files with 10 additions and 7 deletions

View File

@ -230,7 +230,7 @@ void do_debug(char *cmd)
} }
if (last_cmd != 0) { if (last_cmd != 0) {
// Execute debug command: decided where to break next and return. // Execute debug command: decide where to break next and return.
switch (last_cmd) { switch (last_cmd) {
case CMD_CONT: case CMD_CONT:
debug_break_level = -1; debug_break_level = -1;

View File

@ -892,6 +892,7 @@ func Test_Backtrace_DefFunction()
enddef enddef
def g:GlobalFunction() def g:GlobalFunction()
var some = "some var"
CallAFunction() CallAFunction()
enddef enddef
@ -923,19 +924,21 @@ func Test_Backtrace_DefFunction()
\ ':debug call GlobalFunction()', \ ':debug call GlobalFunction()',
\ ['cmd: call GlobalFunction()']) \ ['cmd: call GlobalFunction()'])
call RunDbgCmd(buf, 'step', ['line 1: CallAFunction()']) call RunDbgCmd(buf, 'step', ['line 1: var some = "some var"'])
call RunDbgCmd(buf, 'step', ['line 2: CallAFunction()'])
call RunDbgCmd(buf, 'echo some', ['some var'])
" FIXME: not quite right
call RunDbgCmd(buf, 'backtrace', [ call RunDbgCmd(buf, 'backtrace', [
\ '\V>backtrace', \ '\V>backtrace',
\ '\V->0 function GlobalFunction', \ '\V->0 function GlobalFunction',
\ '\Vline 1: CallAFunction()', \ '\Vline 2: CallAFunction()',
\ ], \ ],
\ #{match: 'pattern'}) \ #{match: 'pattern'})
call RunDbgCmd(buf, 'step', ['line 1: SourceAnotherFile()']) call RunDbgCmd(buf, 'step', ['line 1: SourceAnotherFile()'])
call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim']) call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
" FIXME: repeated line " Repeated line, because we fist are in the compiled function before the
" EXEC and then in do_cmdline() before the :source command.
call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim']) call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
call RunDbgCmd(buf, 'step', ['line 1: vim9script']) call RunDbgCmd(buf, 'step', ['line 1: vim9script'])
call RunDbgCmd(buf, 'step', ['line 3: def DoAThing(): number']) call RunDbgCmd(buf, 'step', ['line 3: def DoAThing(): number'])
@ -945,7 +948,7 @@ func Test_Backtrace_DefFunction()
call RunDbgCmd(buf, 'step', ['line 14: File2Function()']) call RunDbgCmd(buf, 'step', ['line 14: File2Function()'])
call RunDbgCmd(buf, 'backtrace', [ call RunDbgCmd(buf, 'backtrace', [
\ '\V>backtrace', \ '\V>backtrace',
\ '\V 3 function GlobalFunction[1]', \ '\V 3 function GlobalFunction[2]',
\ '\V 2 <SNR>\.\*_CallAFunction[1]', \ '\V 2 <SNR>\.\*_CallAFunction[1]',
\ '\V 1 <SNR>\.\*_SourceAnotherFile[1]', \ '\V 1 <SNR>\.\*_SourceAnotherFile[1]',
\ '\V->0 script ' .. getcwd() .. '/Xtest2.vim', \ '\V->0 script ' .. getcwd() .. '/Xtest2.vim',
@ -956,7 +959,7 @@ func Test_Backtrace_DefFunction()
call RunDbgCmd(buf, 'next', ['line 15: End of sourced file']) call RunDbgCmd(buf, 'next', ['line 15: End of sourced file'])
call RunDbgCmd(buf, 'backtrace', [ call RunDbgCmd(buf, 'backtrace', [
\ '\V>backtrace', \ '\V>backtrace',
\ '\V 3 function GlobalFunction[1]', \ '\V 3 function GlobalFunction[2]',
\ '\V 2 <SNR>\.\*_CallAFunction[1]', \ '\V 2 <SNR>\.\*_CallAFunction[1]',
\ '\V 1 <SNR>\.\*_SourceAnotherFile[1]', \ '\V 1 <SNR>\.\*_SourceAnotherFile[1]',
\ '\V->0 script ' .. getcwd() .. '/Xtest2.vim', \ '\V->0 script ' .. getcwd() .. '/Xtest2.vim',