Замість gdbtui
або ctrl+x
під gdb
яким у верхній частині екрана відображається вихідний код, я хотів би бачити це у своєму редакторі Vim, який переходив би між вкладками та буферами відповідно.
Як я можу це зробити?
Замість gdbtui
або ctrl+x
під gdb
яким у верхній частині екрана відображається вихідний код, я хотів би бачити це у своєму редакторі Vim, який переходив би між вкладками та буферами відповідно.
Як я можу це зробити?
Відповіді:
Серед усіх плагінів, які я пробував, я визнав ConqueGDB найкращим підходом. ConqueGDB використовує Conque Shell для вбудовування інтерактивної оболонки всередині vim, яка використовується GDB.
Робочий процес із ConqueGDB складається не з введення команд GDB на термінал GDB, ви використовуєте ярлики вихідного коду vim. Але ви можете продовжити використовувати підказку GDB, якщо хочете, для більш вдосконалених команд або прокрутіть, щоб переглянути весь сеанс налагодження.
Деякі відображення за замовчуванням ConqueGDB, наприклад:
Зверніть увагу, як рядок курсору vim використовувався для видачі GDB 'рядок друку', поточне виконання коду знаходиться в іншому рядку (14), а в рядку 10 є точка перелому.
Щоб встановити, наприклад, Vundle:
Plugin 'vim-scripts/Conque-GDB'
Я використовую ці параметри плагіна:
let g:ConqueTerm_Color = 2 " 1: strip color after 200 lines, 2: always with color
let g:ConqueTerm_CloseOnEnd = 1 " close conque when program ends running
let g:ConqueTerm_StartMessages = 0 " display warning messages if conqueTerm is configured incorrectly
leader
означає?
<leader>r
означає <kbd> \ </kbd> + <kbd> r </kbd> на моїх комп’ютерах. У посібнику Vim є запис::help leader
<Leader>b
. Він встановлює точку розриву в положенні курсора. Однак це НЕ перемикач, тому ви не можете використовувати його для його видалення знову. Швидше, вам потрібно буде написати "ясно" у запиті GDB.
У вас є кілька плагінів, які інтегрують gdb.
А також є плагін, який інтегрує lldb (від проекту LLVM)
Схоже, що Брам зараз (вересень 2017 року) працює над інтеграцією gdb зсередини vim завдяки новій :terminal
функції. Для його використання нам потрібно завантажити termdebug
пакет (з :packadd termdebug
), тоді ми зможемо запустити консоль gdb у вікно з vim :TermDebug (+options)
. IMO, ми можемо вважати, що це майбутнє інтеграції GDB під Vim.
edit
Команда GDB
Відкриває редактор у поточному рядку за допомогою команди:
$EDITOR +<current-line> <current-file>
За замовчуванням editor
є ex
, але vim
також розуміє +<current-line>
формат.
Коли ви виходите з редактора, ви повертаєтесь у gdb
.
Це дозволяє вільно переглядати джерело і є особливо потужним при ctags
інтеграції.
Це вбудований в один спосіб інтеграцію gdb до vim інтеграції: головне, що бракує, - це встановити точки прориву від Vim.
edit
і центр
edit
не централює Vim за замовчуванням навколо джерела, тому я створив сценарій Python, який це робить: https://stackoverflow.com/questions/43557405/how-to-open-the-current-file-at-the- поточний рядок у текстовому редакторі-від-gdb / 43557406 # 43557406
Команда переривання до помічника буфера обміну
Ця команда vim копіює специфікатор точки перелому типу:
b <file-path>:<line-number>
до буфера обміну:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
Тоді ви можете просто вставити це gdb
.
Це прагнення бідної людини до інтеграції gdb для полегшення встановлення точок прориву.
Дивіться також: https://stackoverflow.com/questions/3536600/do-you-debug-c-code-in-vim-how
Хоча технічно не вим. cgdb - це проклята версія gdb з vim-подібними клавіатурними вкладками. Це був мій налагоджувач goto протягом багатьох років: