Вопрос ко всем вам, кто использует Vim для разработки приложений на C ++.
В моей жизни был период, который можно охарактеризовать как «Я ненавижу Вима !!!» .. «Вим хорош!»
Однако, вырос в основном на IDE разработки Microsoft, я привык к этим F5- F11ярлыкам при отладке кода, окну наблюдения, стеку вызовов и основному коду - все это видно без необходимости вводить какие-либо команды GDB.
Итак, вот вопрос:
Вы также используете Vim для отладки? Или вы переключаетесь на какую-то IDE для этой цели? Который из?
Для тех, кто использует Vim для отладки кода: есть ли плагины для установки точек останова в редакторе, выделите строку, которую мы сейчас отлаживаем, автоматическую навигацию во время шага, шага в, выхода?
Пожалуйста, не говорите мне, что вы используете GDB в качестве командной строки, смотрите только одну строку, которая отлажена, и т. Д.
gdb -tui
.Ответы:
В отличие от других ответов, есть как минимум три варианта, которые делают именно то, что вам нужно: clewn , pyclewn и vimgdb .
Все три проекта связаны между собой. vimgdb - это патч для Vim, требующий перекомпиляции Vim. clewn - это отдельная программа, которая взаимодействует с Vim через интерфейс сокетов Netbeans. Это требует, чтобы Vim был собран с
+netbeans
опцией (это имеет место в последних дистрибутивах Linux, поэтому это не должно быть проблемой).Цитировать с сайта Clewn:
Я думаю, вы должны обязательно попробовать.
На домашней странице сайта pyclewn показано сравнение между тремя проектами.
Несколько месяцев назад я попробовал pyclewn. Это было немного сложно настроить, но выглядит хорошо, хотя и многообещающе. Я только что провел несколько тестов, и вы могли устанавливать закладки и т. Д., Как обычно, что вы ожидаете от графического отладчика. Я закончил тем, что не использовал это по случайным причинам, но я стремлюсь дать ему еще одну попытку.
источник
Vim официально добавил встроенный отладчик в версии 8.1, выпущенной в мае 2018 года. Эта функция присутствовала и в некоторых выпусках версии 8.0 уже в августе 2017 года.
Следующие команды vim загружают плагин и запускают отладчик.
Последняя команда принимает программу в качестве необязательного аргумента, или в качестве альтернативы программа может быть загружена из
gdb
окна с помощьюfile
команды.С загруженным плагином,
gdb
может использоваться в интерактивном режиме в соответствующем окне. Например, можно установить точки останова, выполнить пошаговое выполнение кода и проверить переменные.Команды Vim могут быть выданы для взаимодействия с
gdb
. Некоторые соответствующие команды включают в себя:Step
,:Over
,:Finish
,:Continue
,:Stop
,:Break
,:Clear
, и:Evaluate
.Кроме того, в верхней части окна редактора есть интерактивные кнопки для взаимодействия с
gdb
.Окно редактора обновляется, чтобы отразить состояние отладки. Точки останова обозначены,
>>
а текущая строка выделена.Встроенная справочная страница содержит подробную документацию.
Я недавно написал сообщение в блоге, которое проходит через пример сессии.
https://www.dannyadam.com/blog/2019/05/debugging-in-vim/
источник
Vim - хороший редактор, но для отладки я использую отладчик (например, GDB).
Но вам не нужно использовать GDB в текстовом режиме; Вы можете использовать графический интерфейс, такой как KDbg , DDD или Insight. .
Есть способы получить GDB в Vim (но тогда вы получите текстовую отладку).
источник
edit
Команда GDBОткрывает редактор текущей строки с помощью команды:
По умолчанию
editor
этоex
, ноvim
также понимает+<current-line>
формат.Когда вы выходите из редактора, вы возвращаетесь в
gdb
.Это позволяет вам свободно просматривать исходный код и является особенно мощным, если у вас есть
ctags
интеграция.Это встроенная односторонняя интеграция GDB в vim для бедного человека: главное, чего не хватает, - это установки точек останова из Vim.
edit
и центрedit
По умолчанию Vim не центрируется вокруг источника, поэтому я создал скрипт Python, который делает это: Как открыть текущий файл в текущей строке в текстовом редакторе из GDB?Команда точки останова для помощника буфера обмена
Эта команда vim копирует спецификатор точки останова типа:
в буфер обмена:
Тогда вы можете просто вставить это в
gdb
.Это интеграция vim в gdb для бедных, чтобы упростить установку точек останова.
GDB Dashboard
https://github.com/cyrus-and/gdb-dashboard
Это не имеет ничего общего с Vim, но это легкое решение, которое многого достигает и может подойти другим Vimmers.
Другие упоминали GDB TUI, но я нашел его слишком сломанным и недостаточно мощным, чтобы его можно было терпеть.
Поэтому я перешел к решениям на основе Python API, таким как GDB Dashboard.
Я описал б / у и обоснование более подробно на: GDB разделить представление с кодом
Вот скриншот того, что он дает вам:
Смотрите также: /vi/2046/how-can-i-integrate-gdb-with-vim
Сдайся и используй настоящую IDE
С учетом всего сказанного, это лучшее решение для большинства людей, включая меня. Большинство людей просто выиграют кучу времени, если смогут бегать по определениям с учетом класса C ++, не выбирая и не устанавливая несколько различных плагинов, что включает в себя пошаговую отладку. Начиная с 2020 года, для меня наименее худшим был Eclipse: https://www.slant.co/topics/1411/~best-ides-for-c-on-linux.
источник
Использование отладчика на уровне исходного кода - это только один из многих способов диагностики некорректного поведения программы, и я редко запускаю его - несмотря на то, что это очень легко сделать.
Поэтому для меня просто нет никакого преимущества в использовании текстового редактора, который также является отладчиком . Вместо этого я использую текстовый редактор, который предпочитаю - независимо от того, какой отладчик я выберу. В настоящее время я в основном использую gedit и kdbg для этих целей, но эти варианты со временем меняются независимо.
источник
Обновление 2020: есть новый плагин vimspector, использующий протокол адаптера отладки.
Установите плагин https://github.com/puremourning/vimspector#installation
Настроить (написать
.vimspector.json
)Компилировать с символом отладки
g++ cpp.cpp -ggdb -o cpp
Нажмите,
F4
чтобы начать отладку.vimspector.json
в моей домашней директории (так что работайте в любом подкаталоге)источник
Недавно, долгое время работая над приложением, для которого требовалось, чтобы на его работающем компьютере было установлено несколько компонентов (настроено устройство), я написал код в vim, у меня были сценарии, которые автоматизировали сборку и отправили его на сервер. , который имел скрипт там, чтобы заметить файл дозорного, выдвинутый вместе с двоичными файлами. Это тогда перезапустило бы соответствующие сервисы на коробке, и в другом окне ssh у меня было
tail -f
запуск на моем файле журнала.Короче говоря, я вообще не использовал отладчик. Если бы я что-то неожиданно умер, я просто поднял бы уровни ведения журнала, переделал бы это и посмотрел, что было записано последним, прежде чем оно умерло, затем проанализировал бы это и устранил проблему.
Приятно было то, что, когда в пользовательской среде возникали проблемы, я просто запрашивал журнал уровня отладки и мог определить проблему, даже не требуя доступа к их серверу.
... но да, были времена, когда было бы неплохо иметь отладчик.
источник
Просто чтобы добавить к выше:
IMO vim имеет тенденцию быть довольно легким редактором, и отладка имеет тенденцию увеличивать вес. Есть способы сделать это, используя vim7.4 + с
и запуск одного из следующих отладчиков командной строки (curses). Некоторые из них используются по умолчанию для IDE, которые вы никогда не знали. т.е. lldb = xcode.
очевидно, есть больше основанных на кли; @ не стесняйтесь предлагать и добавлять в список. Спасибо!
источник