12254
|
1 " Debugger commands.
|
|
2 "
|
|
3 " WORK IN PROGRESS - much doesn't work yet
|
|
4 "
|
|
5 " Open two terminal windows:
|
|
6 " 1. run a pty, as with ":term NONE"
|
|
7 " 2. run gdb, passing the pty
|
|
8 " The current window is used to edit source code and follows gdb.
|
|
9 "
|
|
10 " Author: Bram Moolenaar
|
|
11 " Copyright: Vim license applies
|
|
12
|
|
13 command -nargs=* -complete=file Termdebug call s:StartDebug(<q-args>)
|
|
14
|
|
15 if !exists('debugger')
|
|
16 let debugger = 'gdb'
|
|
17 endif
|
|
18
|
|
19 func s:StartDebug(cmd)
|
|
20 " Open a terminal window without a job, to run the debugged program
|
|
21 let s:ptybuf = term_start('NONE', {})
|
|
22 let pty = job_info(term_getjob(s:ptybuf))['tty']
|
|
23
|
|
24 " Open a terminal window to run the debugger.
|
|
25 let cmd = [g:debugger, '-tty', pty, a:cmd]
|
|
26 echomsg 'executing "' . join(cmd) . '"'
|
|
27 let gdbbuf = term_start(cmd, {
|
|
28 \ 'exit_cb': function('s:EndDebug'),
|
|
29 \ 'term_finish': 'close'
|
|
30 \ })
|
|
31 endfunc
|
|
32
|
|
33 func s:EndDebug(job, status)
|
|
34 exe 'bwipe! ' . s:ptybuf
|
|
35 endfunc
|