Вы отлаживаете код С++ в 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.

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