Министерство образования и науки РФ
НГТУ
Кафедра ПСиБД
Лабораторная работа №5
Средства для создания приложений в ОС UNIX
Факультет: ПМИ
Группа: ПМ-73
Студенты: Базина Д.А.
Кулагина М.В.
Преподаватель: Долозов Н.Л.
Новосибирск
2009
1)Цель работы:
Выполнить анализ основных этапов разработки и отладки приложений в ОС UNIX (Linux). Приобрести практические навыки по использованию средств SCO FSF при анализе и компиляции исходного кода, тестировании и отладке программ, написанных на языке Си.
2)Выполнение работы:
1. Осуществите вход в систему.
2. Запустите mc - экранный интерфейс для OC UNIX.
3. В домашнем каталоге создайте подкаталог examples.
mkdirexamples
4. Осуществите поиск на магнитном диске программы testcase.c(команда find).
В лабораторной работе №4 скопировали в каталог practice.
5. Скопируйте файл testcase.c в ваш подкаталог examples под именем abcd.c.
cp ~/practice/testcase.c ~/examples/abcd.c
6. Выполните компиляцию программы abcd.c
cc–о abcd.c
abcd.c: В функции 'PrintWords'
abcd.c:28: ошибка: отсутствует терминирующий символ "
abcd.c:33: ошибка: expected expression before 'int'
abcd.c:63: ошибка: expected declaration or statement at end of input
abcd.c:63: ошибка: expected declaration or statement at end of input
Исправьте синтаксические ошибки. Коррекция файла abcd.c должна быть выполнена с помощью редактора Vi.
vi ~/examples/abcd.c
Исправили ошибку в 28 строке (с помощью редактора vi): заменили символ ‘0’ на недостающую закрывающую кавычку.
7. После устранения всех синтаксических ошибок передайте файл abcd.c под управление инструментального средства CVS.
Удалите файл abcd.c с магнитного диска. Все последующие пункты лабораторной работы, связанные с коррекцией файла abcd.c, должны быть выполнены под контролем CVS.
1) создание репозитория
mkdir ~/cvsroot
cvs –d ~/cvsroot init
2) создание рабочего каталога
mkdir ~/workdir
mkdir ~/workdir/hello
cp ~/examples/abcd.c ~/workdir/hello/abcd.c
3) свяжем рабочую директорию с репозиторием
cd ~/workdir
cvs –d ~/cvsroot checkout –l .
4) передача файлов под управление cvs
cvs –d ~/cvsroot add hello
cvs –d ~/cvsroot add hello/abcd.c
cvs –d ~/cvsroot commit
8. Создайте в поддиректории examples make-файл (makefile), приведенный на с. 58. Для создания этого файла используйте редактор Vi. Далее различные варианты построения исполняемого модуля должны быть получены с помошью программы make.
vi makefile
#
# Makefile for abcd.c
#
# Compile abcd.c normaly
abcd:abcd.c
g cc –g abcd abcd.c
# Compile abcd.c be using debugging
testabcd:abcd.c
gcc -o testabcd -g abcd.c
# End Makefile for abcd.c
9. Выполните отладку программы abcd.c. Для отладки используйте программу gdb. Каждое исправление в программе abcd.c должно сопровождаться комментарием инструментального средства CVS. Комментарий должен содержать текст на русском языке, поясняющий сущность исправлений (например номер строки программы abcd.c и причина исправления).
1)cvs –d ~/cvsroot checkout hello
cvs checkout: Updating hello
U hello/abcd.c
gcc -g hello/abcd.c
/tmp/cce5uxln.o: In function `main':
/home/brigades/pm7303/examples/abcd.c:60: warning: the `gets' function is dangerous and should not be used.
./a.out
this is the test
./a.out -t
this the test
gdb a.out
(gdb) break 27
Breakpoint 1 at 0x4005b2: file abcd.c, line 27.
(gdb) run
Starting program: /home/brigades/pm7303/workdir/hello/a.out
this is the test
Breakpoint 1, PrintWords (wc=4, match=0 '\0') at abcd.c:27
27 if (*cp== match) /* Found a match? Write the word on stdout. */
(gdb) print *cp
$1 = 0 '\0 '
(gdb) print match
$2 = 32 ' '
vi hello/abcd.c
исправили в 56 строке match=’ ’ на match=’\0’
cvs –d ~/cvsroot commit hello/abcd.c
Checking in hello/abcd.c;
/home/brigades/ pm7303/cvsroot/hello/abcd.c,v <-- abcd.c
new revision: 1.2; previous revision: 1.1
done
rm -r hello
2) cvs –d ~/cvsroot checkout hello
cvs checkout: Updating hello
U hello/abcd.c
gcc -g hello/abcd.c
/tmp/ccmDV9tj.o: In function `main':
hello/abcd.c:60: warning: the `gets' function is
dangerous and should not be used.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.