Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Интеграция с отладчиком

Привет, коллеги. С отладчиком мы, наверное, все знакомы. Это программа, позволяющая выполнять другую программу пошагово, следить за значениями переменных, ставить контрольные точки, чтобы остановить программу где нужно, и так далее. В Вим есть встроенный отладчик, Перл тоже может работать в режиме отладчика, подозреваю, что и другие интерпретаторы тоже. Для компилируемых языков есть внешние отладчики. Например, gdb. Если у вас Линукс, то он у вас уже стоит, скорее всего.

Программу надо компилировать с включением отладочной информации, см. документацию к компилятору. Потом на отладчике ее можно, собственно, отлаживать: выполнять пошагово, причем можно заходить в процедуры, а можно выполнять их как целое; ставить контрольные точки, так что выполнение прервется на них: просто в нужной позиции или при выполнении условия; смотреть значения переменных; и так далее. Справочников по отладчику gdb в интернете полно, например вот или вот.

В Вим версии 8 имеется поддержка терминала: можно открыть bash в окне Вим или запустить там внешнюю команду. В том числе и отладчик: тогда вы будете видеть и исходный код и происходящее внутри вашей программы. Для облегчения процесса интеграция с отладчиком реализована в виде плагина в поставке Вим: termdebug.

Включите его: packadd termdebug

Теперь у вас есть команда :Termdebug, позволяющая запустить скомпилированную программу на отладчике gdb (или другом).

Выбрать отладчик позволяет переменная (не опция! задается через :let) termdebugger. Например, на кластере стоит почему-то не gdb, а gdb-ia. Формально это другой исполняемый файл, и вот тут-то мне это пригодилось.

Команда :Termdebug test при открытом файле test.f90 запустила на отладчике скомпилированный код. Позиция в коде и breakpoint отмечены, кнопочки позволяют удобно выполнять код пошагово, вывод идет в среднее окошко, общение с отладчиком возможно в окошке сверху.
Команда :Termdebug test при открытом файле test.f90 запустила на отладчике скомпилированный код. Позиция в коде и breakpoint отмечены, кнопочки позволяют удобно выполнять код пошагово, вывод идет в среднее окошко, общение с отладчиком возможно в окошке сверху.

Откроется два окна: в одном будет работать отладчик, в другое пойдет вывод отлаживаемой программы. В третьем, исходном окне может быть исходный код. Причем Вим еще и будет пытаться отслеживать текущую позицию в исходном коде, отмечая ее закладкой.

Основные команды отладчика будут продублированы кнопочками, на которые можно нажимать мышкой.

Команды отладчика, которые можно вводить в его окне, можно отдавать и из окна с исходным кодом через прокси-команды, такие, как :Run, :Break, :Step и т.п. Но это только для gdb или совместимых с ним отладчиков.

Поскольку всё это работает внутри Вим, то можно запускать это всё по ssh удалённо.

Удачи в отладке!

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022