Вы отлаживаете код C ++ в Vim? Как? - PullRequest
137 голосов
/ 21 августа 2010

Вопрос ко всем вам, кто использует Vim для разработки приложений на C ++.

В моей жизни был период, который можно охарактеризовать как «Я ненавижу Vim !!!» .. »Vimэто хорошо! '

Однако, вырос в основном в среде разработки Microsoft, я привык к этим F5 - F11 ярлыкам при отладке кода, окно просмотра, стек вызовов и основной код - все это видно без необходимости вводить какие-либо команды GDB.

Итак, вот вопрос:

Вы также используете Vim для отладки?Или вы переключаетесь на какую-то IDE для этой цели?Какой из них?

Для тех, кто использует Vim для отладки кода: есть ли плагины для установки точек останова в редакторе, выделите строку, которую мы сейчас отлаживаем, автоматическую навигацию во время шага, шаг в, выход?

Пожалуйста, не говорите мне, что вы используете GDB в качестве командной строки, смотрите только одну строку, которая отлажена и т.д.

Ответы [ 7 ]

70 голосов
/ 22 августа 2010

В отличие от других ответов, есть как минимум три варианта, которые делают именно то, что вам нужно: clewn , pyclewn и vimgdb .

Все три проекта связаны между собой. vimgdb - это патч для Vim, требующий перекомпиляции Vim. clewn - это отдельная программа, которая взаимодействует с Vim через интерфейс сокетов Netbeans.Для этого требуется, чтобы Vim был собран с опцией +netbeans (это имеет место в последних дистрибутивах Linux, поэтому это не должно быть проблемой).

Цитата с сайта clewn:

Clewn реализует полную поддержку gdb в редакторе vim: точки останова, переменные наблюдения, завершение команды gdb, окна сборки и т. Д.

Я думаю, вам определенно стоит попробовать.

На домашней странице сайта pyclewn показано сравнение между тремя проектами.

Несколько месяцев назад я попробовал pyclewn.Это было немного сложно настроить, но выглядит хорошо, хотя и многообещающе.Я только что провел несколько тестов, и вы могли устанавливать закладки и т. Д., Как обычно, что вы ожидаете от графического отладчика.В итоге я не использовал его по непредвиденным обстоятельствам, но мне хотелось бы попробовать еще раз.

14 голосов
/ 21 августа 2010

Vim - хороший редактор, но для отладки я использую отладчик (например, GDB).

Но вам не нужно использовать GDB в текстовом режиме;Вы можете использовать графический интерфейс, например KDbg , DDD или Insight .

Есть способы получить GDB в Vim (но тогда вы делаетеполучить текстовую отладку).

8 голосов

GDB edit команда

Открывает редактор текущей строки с помощью команды:

$EDITOR +<current-line> <current-file>

По умолчанию editor - ex, но vim также понимает формат +<current-line>.

Когда вы выходите из редактора, вы возвращаетесь в gdb.

Это позволяет свободно просматривать исходный код и является особенно мощным, если у вас есть интеграция ctags.

Это встроенная односторонняя интеграция GDB в vim для бедного человека: главное, чего не хватает, - это установки точек останова из Vim.

edit и центр

edit по умолчанию не центрирует Vim вокруг источника, поэтому я создал скрипт Python, который делает это: Как открыть текущий файл в текущей строке в текстовом редакторе из GDB?

Команда точки останова для помощника буфера обмена

Эта команда vim копирует спецификатор точки останова типа:

b <file-path>:<line-number>

в буфер обмена:

command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')

Тогда вы можете просто вставить это в gdb.

Это интеграция vim в gdb для бедных, облегчающая установку точек останова.

Панель управления GDB

https://github.com/cyrus-and/gdb-dashboard

Это не имеет ничего общего с Vim, но это легкое решение, которое многого достигает и может подойти другим Vimmers.

Другие упоминали GDB TUI, но я нашел его слишком сломанным и недостаточно мощным, чтобы его можно было переносить.

Поэтому я перешел к решениям на основе Python API, таким как GDB Dashboard.

Я более подробно описал использование и обоснование по адресу: разделенное представление GDB с кодом

Вот скриншот того, что он вам дает:

enter image description here

Смотри также: https://vi.stackexchange.com/questions/2046/how-can-i-integrate-gdb-with-vim


4 голосов
/ 13 мая 2019

Vim официально добавил встроенный отладчик в версии 8.1, выпущенной в мае 2018 года. Эта функция присутствовала также в некоторых выпусках версии 8.0 уже в августе 2017 года.

Следующий vimКоманды загружают плагин и запускают отладчик.

:packadd termdebug
:Termdebug

Последняя команда принимает программу в качестве необязательного аргумента, или в качестве альтернативы программа может быть загружена из окна gdb с помощью команды file.

При загруженном плагине gdb может использоваться в интерактивном режиме в соответствующем окне.Например, можно установить точки останова, выполнить пошаговое выполнение кода и проверить переменные.

Можно вводить команды Vim для взаимодействия с gdb.Некоторые соответствующие команды включают :Step, :Over, :Finish, :Continue, :Stop, :Break, :Clear и :Evaluate.

Кроме того, наверхняя часть окна редактора для взаимодействия с gdb.

Окно редактора обновляется для отображения состояния отладки.Точки останова обозначены >>, а текущая строка выделена.

Встроенная страница справки содержит подробную документацию.

:help terminal-debug

Недавно я написал сообщение в блоге, в котором рассматривается пример.сеанс.

https://www.dannyadam.com/blog/2019/05/debugging-in-vim/

4 голосов
/ 22 августа 2010

Использование отладчика на уровне исходного кода - это только один из многих способов диагностики неисправного поведения программы, и я редко запускаю его - несмотря на то, что это очень легко сделать.

Так что для меня, просто нет никакого преимущества в использовании текстового редактора, который также является отладчиком .Вместо этого я использую текстовый редактор, который я предпочитаю - независимо от того, какой отладчик я выберу использовать.В настоящее время я в основном использую gedit и kdbg для этих целей, но эти варианты развиваются независимо с течением времени.

1 голос
/ 21 августа 2010

Совсем недавно, долгое время работая над приложением, для которого требовалось, чтобы на его работающем компьютере было установлено множество вещей (я настроил устройство), я написал код в vim, у меня были скрипты, которые автоматизировали его сборку, выдвигая его.на сервер, на котором был установлен скрипт, чтобы заметить файл дозорного, выдвинутый вместе с двоичными файлами.Это тогда перезапустило бы соответствующие службы на коробке, и в другом окне ssh у меня был tail -f, работающий над моим файлом журнала.

Короче говоря, я вообще не использовал отладчик.Если бы у меня что-то неожиданно умерло, я просто поднял бы уровни ведения журнала, переделал бы это и посмотрел, что было записано последним, прежде чем оно умерло, затем проанализировал бы это и исправил проблему.

Приятно то, чтокогда что-то вызывало проблемы в среде клиента, я просто запрашивал журнал уровня отладки и мог определить проблему, даже не требуя доступа к их серверу.

... но да, были случаи, когда этобыло бы неплохо иметь отладчик.

0 голосов
/ 03 апреля 2019

Просто добавим к вышесказанному:

IMO vim имеет тенденцию быть довольно легким редактором, а отладка имеет тенденцию увеличивать вес.Есть способы сделать это, например, используя vim7.4 + с

:terminal

и запустив один из следующих отладчиков командной строки (curses).Некоторые из них по умолчанию используются для IDE, которые вы никогда не знали.то есть lldb = xcode.

очевидно, что есть больше основанных на кли;@ не стесняйтесь предлагать и добавлять в список.спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...