h0rr0rr_drag0n 14.08.2009 23:00

VimИспользование отладчика gdb в Vim’e

При использовании Vim’a как IDE иногда возникает потребность вызвать отладчик для исполняемого файла открытого проекта. Интеграция gdb и vim’а возможна разными способами: путем накладывания патча или использования специального плагина. Я пошел своим путем и сделал простенький скрипт для использования отладчика вместе с вимом.



Скрипт должен быть запущен из вима (:!./script.sh). После запуска он получает список исполняемых файлов в рабочем каталоге (каталог, в котором содержится открытый в vim’е файл) и исключает из этого списка скрипты для шелла и перловые скрипты. Впрочем, если вы владеете языком регулярных выражений, то можете исключить любые другие исполняемые файлы с известным расширением.



Далее, если исполняемый файл только один – он сразу запускается в отладчике. Если файлов несколько – выводится их список и нужно выбрать необходимый исполняемый файл.



Отладчик запускается в отдельном эмуляторе терминала, исполняемый файл которого указывается пользователем в переменной TERMINAL.



Код скрипта gdb.sh:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/sh



# Получаем список исполняемых файлов в текущем каталоге

# не являющихся скриптами

TEMPFILE="/tmp/gdb.tempfile"

find . -executable -type f | egrep -v '.+\.(sh)|(perl)|(bash)' > $TEMPFILE



# если файл один - сразу начинаем его дебажить

if < `cat $TEMPFILE | wc -l` -eq "0" >; then

echo "No executable files found!"

exit 1

elif < `cat $TEMPFILE | wc -l` -eq "1" >; then

FILENAME=`cat $TEMPFILE`

else

cat -b $TEMPFILE

echo "Enter number of executable file for debugging:"

read FILENO

if < "`echo $FILENO | perl -ne 'if(m/\d+/) {print}'`" != "`echo $FILENO`" >; then

echo "You enter invalid number! Bye."

exit 2

fi

FILENAME=`cat $TEMPFILE | sed -n "$FILENO"'p'`

if < ! -n "$FILENAME" >; then

echo "You number is not in valid space!"

exit 3

fi

fi



rm -f $TEMPFILE

TERMINAL=gnome-terminal

$TERMINAL -e "gdb --tui $FILENAME" -t 'VIM: GDB - Debugging'





Можно забиндить вызов этого скрипта на любую удобную кнопку в .vimrc

1
2
3
4
5
&#34; Запуск дебаггера

imap :!~/.vim/gdb.sh

nmap :!~/.vim/gdb.sh





Скриншот работы всего этого хозяйства:



По материалам блога Дракон-линуксоид


Тэги: gdb vim
+ 1 -
Похожие Поделиться

digiwhite 17.08.2009 06:47 #
Чего-то скриншот то у меня не показывает.
h0rr0rr_drag0n 17.08.2009 08:30 #
Проблемы с хостингом фотографий.
Вот еще одна ссылка: http://h0rr0rr-drag0n.spb.ru/wp-content/uploads/2009/08/snimok42-300x187.png
h0rr0rr_drag0n 17.08.2009 08:31 #