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