Привет, коллеги. С отладчиком мы, наверное, все знакомы. Это программа, позволяющая выполнять другую программу пошагово, следить за значениями переменных, ставить контрольные точки, чтобы остановить программу где нужно, и так далее. В Вим есть встроенный отладчик, Перл тоже может работать в режиме отладчика, подозреваю, что и другие интерпретаторы тоже. Для компилируемых языков есть внешние отладчики. Например, gdb. Если у вас Линукс, то он у вас уже стоит, скорее всего.
Программу надо компилировать с включением отладочной информации, см. документацию к компилятору. Потом на отладчике ее можно, собственно, отлаживать: выполнять пошагово, причем можно заходить в процедуры, а можно выполнять их как целое; ставить контрольные точки, так что выполнение прервется на них: просто в нужной позиции или при выполнении условия; смотреть значения переменных; и так далее. Справочников по отладчику gdb в интернете полно, например вот или вот.
В Вим версии 8 имеется поддержка терминала: можно открыть bash в окне Вим или запустить там внешнюю команду. В том числе и отладчик: тогда вы будете видеть и исходный код и происходящее внутри вашей программы. Для облегчения процесса интеграция с отладчиком реализована в виде плагина в поставке Вим: termdebug.
Включите его: packadd termdebug
Теперь у вас есть команда :Termdebug, позволяющая запустить скомпилированную программу на отладчике gdb (или другом).
Выбрать отладчик позволяет переменная (не опция! задается через :let) termdebugger. Например, на кластере стоит почему-то не gdb, а gdb-ia. Формально это другой исполняемый файл, и вот тут-то мне это пригодилось.
Откроется два окна: в одном будет работать отладчик, в другое пойдет вывод отлаживаемой программы. В третьем, исходном окне может быть исходный код. Причем Вим еще и будет пытаться отслеживать текущую позицию в исходном коде, отмечая ее закладкой.
Основные команды отладчика будут продублированы кнопочками, на которые можно нажимать мышкой.
Команды отладчика, которые можно вводить в его окне, можно отдавать и из окна с исходным кодом через прокси-команды, такие, как :Run, :Break, :Step и т.п. Но это только для gdb или совместимых с ним отладчиков.
Поскольку всё это работает внутри Вим, то можно запускать это всё по ssh удалённо.
Удачи в отладке!