Вы отлаживаете код С++ в Vim? Как?
Вопрос ко всем вам, кто использует Vim для разработки приложений на С++.
В моей жизни был период, который можно описать как
"Я ненавижу Вима!!!". "Вим хороший!"
Однако, выросший в основном на средах разработки Microsoft, я привык к этим F5 - F11 ярлыкам при отладке кода, окне просмотра, стеке вызовов и главном коде - все видно без необходимости вводить Команды GDB.
Итак, вот вопрос:
Используете ли вы Vim для отладки? Или вы переключаетесь на некоторые IDE для этой цели? Какой?
Для тех, кто использует Vim для отладки кода: есть ли плагины для установки контрольных точек в редакторе, выделите строку, которую мы в настоящее время отлаживаем, автонавигация во время шага, шаг за шагом?
Пожалуйста, не говорите мне, что вы используете GDB в качестве командной строки, смотрите только одну отлаженную строку и т.д.
Ответы
Ответ 1
В отличие от других ответов, существует как минимум три варианта, которые делают именно то, что вам нужно: clewn, pyclewn и vimgdb.
Все три проекта связаны друг с другом. vimgdb - это патч против Vim и требует, чтобы Vim перекомпилировался. clewn - это автономная программа, которая взаимодействует с Vim через интерфейс сокетов Netbeans. Для этого требуется, чтобы Vim был построен с опцией +netbeans
(это имеет место в последних дистрибутивах Linux, поэтому это не должно быть проблемой).
Процитировать с сайта:
Clewn реализует полную поддержку gdb в редакторе vim: контрольные точки, наблюдаемые переменные, завершение команды gdb, окна сборки и т.д.
Я думаю, вы должны обязательно отдать ему удовольствие.
На домашней странице веб-сайта показаны несколько проектов.
Несколько месяцев назад я попробовал pyclewn. Было немного сложно настроить, но это выглядит хорошо, хотя и многообещающе. Я просто сделал несколько тестов, и вы могли устанавливать закладки и т.д., Обычные вещи, которые вы ожидаете от графического отладчика. Я закончил тем, что не использовал его по непредвиденным причинам, но я очень хочу дать ему еще одну попытку.
Ответ 2
Vim - хороший редактор, но для выполнения отладки я использую отладчик (например, GDB).
Но вам не нужно использовать GDB в текстовом режиме; вы можете использовать графический интерфейс, например KDbg, DDD или Insight.
Есть способы получить GDB в Vim (но тогда вы получите отладку на основе текста).
Ответ 3
Команда edit
GDB
Открывает редактор текущей строки с помощью команды:
$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
.
Это плохой человек для интеграции с GDB, чтобы упростить установку точек останова.
GDB Dashboard
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
Использование отладчика на уровне источника - один из многих способов диагностики ошибочного поведения программы, и я редко нахожу, что я запускаю его, несмотря на то, что это очень легко сделать.
Итак, для меня просто нет неотъемлемого преимущества в использовании текстового редактора, который также является отладчиком. Вместо этого я использую текстовый редактор, который я предпочитаю, независимо от того, какой отладчик я предпочитаю использовать. На данный момент я использую gedit и kdbg для этих целей, но эти варианты эволюционируют независимо со временем.
Ответ 5
Недавно совсем недавно работала над приложением, требуя, чтобы на ящике была запущена куча вещей (устройство было настроено), я написал код в vim, были сценарии, которые автоматизировали создание, нажав на него на сервер, который имел script, чтобы заметить, что файл дозорного кода вытолкнут вместе с двоичными файлами. Затем он перезапустит соответствующие службы в окне, а в другом окне ssh я выполнил tail -f
в моем файле журнала.
Короче говоря, я вообще не использовал отладчик. Если бы у меня что-то неожиданно произошло, я бы просто увеличил уровни ведения журнала, повторил его и посмотрел, что было последним, зарегистрированным до его смерти, затем проанализируйте и устраните проблему.
Приятно было, что, когда что-то было в среде клиента, я просто просил журнал уровня Debug и мог идентифицировать проблему, даже не требуя доступа к их серверу.
... но да, были времена, когда было бы неплохо иметь отладчика.
Ответ 6
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/
Ответ 7
Я использую vim + ctags + taglist для записи и просмотра кода в системах Windows и * nix. Насколько я знаю, нет способа использовать отладчик из vim, поэтому я использую внешние отладчики (VS, windbg, gdb...).
Ответ 8
Просто чтобы добавить к выше:
IMO vim имеет тенденцию быть довольно легким редактором, и отладка имеет тенденцию увеличивать вес. Есть способы сделать это, например, используя vim7. 4+ с
:terminal
и запуск одного из следующих отладчиков командной строки (curses). Некоторые из них по умолчанию используются для IDE, которые вы никогда не знали. т.е. lldb = xcode.
очевидно, есть больше основанных на кли; @не стесняйтесь предлагать и добавлять в список. Спасибо!