Вместо 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)
. ИМО, мы можем считать это будущим интеграции 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- текущая линия-в-текст-редактор из-БГДА / 43557406 # 43557406
Команда точки останова для помощника буфера обмена
Эта команда vim копирует спецификатор точки останова типа:
b <file-path>:<line-number>
в буфер обмена:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
Тогда вы можете просто вставить это в gdb
.
Это интеграция vim в gdb для бедных, чтобы упростить установку точек останова.
Смотрите также: https://stackoverflow.com/questions/3536600/do-you-debug-c-code-in-vim-how
Хотя технически не vim. cgdb является проклятой версией gdb с vim-подобными сочетаниями клавиш. Это был мой goto отладчик в течение многих лет: