Отладка программ в (g)Vim
В отличие от emacs, который поддерживает отладку "искаропки", редактор Vim или его графическая версия по умолчанию не имеют средств отладки С/С++ программ. Однако, Vim в смысле отладки тоже не стоит на месте. Добрые люди пишут различные программы, плагины, патчи для поддержки отладчика GDB в (g)Vim. Многие из них уже выложены на официальный сайт программы: http://Vim.Org/scripts/.... Как видно, многие из этих утилит уже устарели и имеют дату последнего обновления более двух лет назад.
В этой статье будет рассмотрен проект Clewn. Это один из самых старых, но всё ещё активно развивающихся проектов. Clewn предоставляет полную поддержку отладчика GDB в редакторе Vim: точки останова, просмотр переменных, управление GDB напрямую командами и т.д. Это возможно сделать двумя способами: через отдельную программу Clewn, или через VimGDB патч для Vim. Clewn контролирует Vim через netBeans сокет, запускается и выполняется отдельно, сообщая команды Vim. Однако для того, что бы использовать Clewn, Vim должен быть скомпиллирован с поддержкой netBeans. Если Clewn использовать не получается - можно использовать VimGDB. Он накладывается на Vim до его сборки и выполнен в виде дополнительной опции компиляции. И Clewn и VimGDB используют один и тот же функциональный код, так что результат будет приблизительно один и тот же.
Установка Clewn
Установка Clewn абсолютно стандартна:
Установка VimGDB
Если же установить Clewn по каким-либо причинам не удалось, либо читатель просто решил установить поддержку GDB через VimGDB патч, то нам опять же поможет документ помощи по установке. На этот раз, его VimGDB секция. А именно, для начала архивы с Vim и VimGDB нужно распаковать:
После этого нужно распаковать архив vimgdb_runtime.tgz в свою runtime-директорию. Например, ~/.vim/. Чтобы наверняка её узнать, в запущенном Vim можно выполнить команду
Установка VimGDB в Gentoo
В Gentoo руками нужно делать намного меньше. Большую часть работы система может выполнить за Вас. Также, система в добавок пропатчит Vim некоторыми нужными патчами. Для начала создадим локальное дерево портежей. Далее добавляем туда несколько ebuild-файлов, которые можно скачать или ТУТ. После этого для каждого ebuild-файл нужно создать манифест:
Подготовка к запуску
Возможно, перед запуском (g)Vim читатель захочет добавить себе в .vimrc следующие опции:
Запуск
Теперь запускаем Vim и загружаем в него нужный исходник. Его нужно откомпилировать. Компиляцию можно либо забиндить на какую-либо комбинацию клавиш в Vim, либо откомпилировать исходник непосредственно в консоли. Например, командой:
Теперь опять вернёмся в Vim. Для начала, запустим скрипт macros/gdb_mappings.vim :
Запустим сам GDB. Это можно сделать следующей командой:
Отладка
Во время работы с Clewn/VimGDB очень помогает файл помощи (:help vimgdb). Там же можно узнать основные комбинации клавиш, установленные по умолчанию. Нас интересует запуск программы (Shift+R), установка точки останова (Ctrl+B), шаг с заходом в функции (Shift+S), следующая строка (Ctrl+N).
Первым делам устанавливаем нужные точки останова. После этого можно запустить программу. Выполнение её остановится на первой встретившейся точке останова. После этого можно использовать клавиши шагов (Shift+S, Ctrl+N и т.п.)
Однако что за отладка без просмотра значения переменных? Для того, чтобы отобразить значения переменных для начала вертикально разделим наше окно (Ctrl+W V). Выберем то окно, где будут отображаться переменные. После этого вводим команду:
Просматривать значения переменных можно гораздо удобнее. Например, если в нормальном режиме навести курсор на переменную и нажать Ctrl+P, то в окне GDB отобразится её значение. Если в визуальном режиме(переход в него из нормального - клавишей v или выделением текста мышью) навести курсор на переменную, или выделить её, после чего нажать Ctrl+P, то переменная автоматически создастся и отобразится в буфере gdb-variables.
Иногда в процессе отладки нужно на ходу изменить значение переменной. Для этого нужно выполнить команду, типа:
Редактирование значения переменной тоже можно сделать визуальным. Для этого IMDagger советует добавить в свой (g)vimrc следующую строку:
Замечания
Во время работы были замечены некоторые особенности. А именно: - перед использованием пошаговой отладки программу обязательно нужно запустить. Точнее, при отладке программа запускается всегда. Но обычно в средах разработки при нажатии комбинации клавиш "Шаг на следующую строку" среда автоматически запускает программу и "шагает" на 1 строку. Здесь нужно не забывать ставить точки останова и чтобы дойти до первой нужно нажать Shift+R (запустить программу). - в моей сборке переменные, отображаемые в буфере gdb-variables, действительны на период только одного запуска программы. Т.е. при перезапуске (например, когда прошли все шаги выполнения и программа корректно завершилась) переменные также нужно пересоздать, т.к. имена ранее добавленных переменных отображаются, а значения - нет. Однако у некоторых людей всё нормально работает.
Эта статья будет постепенно совершенствоваться и дополняться. Надеюсь, с Вашей помощью. Также в процессе перевода справка VimgGDB на русский язык.
А вот как выглядит отладка в GVim:

Web: http://demanxp.net.ru
E-Mail: Dem[at]nXP[dot]net[dot]ru
(заменить [at] на "@", [dot] на ".")
ICQ: 606986
- Просмотров: 3653
Версия для печати
reklamkin | цитировать
podcepit | цитировать
Tinkerbabe | цитировать


----------------------------
?
! .
-
:
# ,
# , , email,
# ftp, pr, , socks, proxy
# popunder, sms,
# rambler, gmail
# ftp, direct admin
# , , ,
# cms ,
# , ,
.
,
icq:421156969
----------------------------
?
! .
-
:
- ,
- , , email,
- ftp, pr, , socks, proxy
- popunder, sms,
- rambler, gmail, yandex
- ftp, direct admin
- , , ,
- cms ,
- , ,
.
,
icq:421156969