Главная страница
Навигация по странице:

  • Инструментальные средства разработки программ

  • Программа не работает. 21 строка

  • Программа работает исправно.

  • Программа работает исправно

  • ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ПРОГРАММ. Инструментальные средства разработки программ


    Скачать 2.85 Mb.
    НазваниеИнструментальные средства разработки программ
    АнкорИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ПРОГРАММ
    Дата01.06.2022
    Размер2.85 Mb.
    Формат файлаdocx
    Имя файлаOSi_6 (1).docx
    ТипДокументы
    #563279


    Федеральное государственное бюджетное
    образовательное учреждение высшего образования


    « Новосибирский государственный технический университет»



    Кафедра теоретической и прикладной информатики

    п о дисциплине «»

    Инструментальные средства разработки программ








    Бригада 4

    Пуерова Ксения

    Группа ПМ-04

    Сальников Дмитрий



























    Кобылянский В. Г.




    сивак м.а.

    Новосибирск,



    1. Цель

    Целью работы является изучение основных этапов разработки и отладки приложений в ОС Linux, а также приобретение практических навыков по использованию инструментальных средств фонда свободного программного обеспечения при компиляции исходного кода, сборке, отладке и тестировании программ, написанных на языке Си.

    1. Ход работы





    1. Запустите файловый менеджер mc и создайте в домашнем каталоге подкаталоги cvsroot, workdir и examples, в каталоге workdir создайте подкаталог project



    1. Выполните поиск во внешней памяти сервера файла testcase.c



    Command -> find file



    F6



    1. Скопируйте файл testcase.c в каталог project под именем abcd.c и занесите в отчет исходный текст программы, предварительно сравнив его с текстом, приведенные в п.2.6.

    F5



    1. С помощью редактора vi создайте в каталоге project make-файл согласно п. 2.3.

    Перейдем в каталог project и командой vimakefileсоздаем



    1. Выполните компиляцию программы abcd.c с помощью make-файла, используя правило abcd. При необходимости исправьте синтаксические ошибки с помощью редактора vi, информацию по ошибкам и их устранению занесите в отчет (номер строки, значение строки до устранения и после устранения ошибки, пояснения).



    23-28 строка: отсутствует завершающий символ “





    55 строка: исправление предупреждения

    До




    После



     



    58 строка:

    До




    После



     



    После исправления:



    1. В каталоге cvsroot создайте репозиторий CVS.



    Т.к. CVS не знает, где находится текущий репозиторий, задаём базовый каталог cvsroot. Для этого нужно явно указывать ключом -d.

    1. Передайте каталог project и файл abcd.c в репозиторий. При выполнении команды commit с помощью редактора vi введите комментарий, например: “Пользователь pmi-b0404 передал файл abcd.c под управление CVS”.



    передаем каталог project в хранилище

    передаем файл abcd.c в хранилище



    добавляем комментарий





    1. Запустите исполняемый файл abcd.c и поясните результат запуска.



    Программа работает некорректно, так как имеются семантические ошибки.

    1. Перекомпилируйте программу с помощью правила testabcd make-файла.



    1. С помощью отладчика gdb выполните поиск и устранение семантических ошибок в программе abcd. Каждое исправление в программе должно сопровождаться записью в репозиторий новой версии с комментарием, поясняющим на русском языке сущность исправлений (например, номер строки программы abcd.c и причина исправления). После устранения всех ошибок занесите в отчет результаты тестирования программы в двух вариантах запуска – без параметра и с параметром.



    Команда start для запуска отладки gdb, мы видим, что программа останавливается на 51 строке.

    51 строка: неправильное начальное значение match

    До




    После



     



    [pmi-b0404@students project]$ cvs commit -m "Строка № 51 - неправильное начальное значение match”

    cvs commit: Examining .



    По условию, при корректной работе программы слова должны выводиться с новой строки.

    23 строка: вывод с новой строки

    До




    После



     



    Проверим, предварительно обновив testabcd







    Теперь проверим корректность работы программы с опцией -t



    Программа не работает.

    21 строка: первая буква слова не проверяется, т.к. сначала происходит инкремент cp, а после сравнение

    До




    После



     



    Программа с опцией -t работает исправно.





    1. После получения корректных результатов выполнения программы abcd с помощью редактора vi в начало отлаженной программы введите комментарий: "Программа abcd отлажена с помощью отладчика gdb дд.мм.гг. бригадой группы ПМ-ХХ в составе: ФИО1, ФИО2..." и сохраните в репозиторий финальную версию программы.











    1. Выведите список изменений файла abcd.c, выполненных в ходе отладки программы, занесите список в отчет.


    1. Пользователь pmi-b0404 передал файл abcd.c под управление CVS.

    2. 51 Неправильное начальное значение match

    3. 23 Исправлено на вывод каждого слова с новой строки

    4. 21 Проверка первого символа

    5. Финальная версия




    1. Определите размер исполняемого модуля отлаженной программы. Удалите всю отладочную информацию и снова определите размер исполняемого модуля, сравните с предыдущим результатом, результат сравнения занесите в отчет.



    Размер исполняемого модуля 11845 байт.



    Размер исполняемого файла удаление отладочной информации 6256 байта.

    1. Извлеките из репозитория полностью отлаженную программу abcd и скопируйте её в каталог examples, заменив в нем предыдущую версию программы. Все дальнейшие действия будут выполняться в этом каталоге.



    1. Выполните разбиение полностью отлаженной программы abcd на функции в соответствии с номером бригады из таблицы 3. Обратите внимание на тип функции (внутренняя или внешняя), тип файла (.c, .h или .o) и тип модуля (исходный или объектный). Занесите в отчет измененный текст программы.

    № бригады

    main()

    printwords()

    getwords()




    тип

    файл

    тип

    файл

    тип

    файл

    4

    внутренний, исходный

    abcd2.c

    внутренний, исходный

    abcd2.c

    внешний, исходный

    getwords.c





    1. Выполните сборку программы в соответствии вариантом задания, используя неявный вызов компоновщика и задав имя исполняемого файла adcd2_1; проверьте корректность работы программы и занесите в отчет результаты ее тестирования.





    Компиляция программы abcd2.c и формирование исполняемого модуля abcd2_1 с включением в него отладочной информации



    Программа работает исправно.



    1. Выполните поиск во внешней памяти сервера каталога obj, скопируйте из него все файлы в каталог example, поясните в отчете назначение скопированных файлов.






    crtn.o – содержит эпилог функции _init, помещаемый в конец секций .init

    crti.o – содержит пролог функции _init, помещаемый в начало секций .init

    crtbegin.o, crtend.o – обрабатывают глобальные конструкторы и деструкторы языка С++

    crt1.o – содержит код, инициализирующий среду исполнения языка C и вызывающий определенную пользователем функцию main






    1. Выполните сборку программы в соответствии вариантом задания, используя явный вызов компоновщика. Результатом сборки должны быть исполняемый файл abcd2_2 и карта памяти abcd2_map; проверьте корректность работы программы и занесите в отчет результаты ее тестирования.





    Появилось 2 обьектных модуля: getWords.o и abcd2.o

    Явный вызов компоновщика: ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o abcd2_2 –Map= abcd2_map /usr/lib64/crt1.o /usr/lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o abcd2.o getWords.o -lc /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o /usr/lib64/crtn.o



    В результате получили исполняемый файл abcd2_2 и и карта памяти abcd2_map

    1. Из карты памяти abcd2_map определите размеры машинного кода модулей abcd2.o, printwords.o и getwords.o, сравните их с размерами исходного и объектного кода этих модулей (файлы типа и .о). Результат представьте в виде таблицы 4, все данные должны быть подтверждены скриншотами.

    Имя модуля

    Исходный, байт

    Объектный, байт

    Машинный код, байт

    printwords

    -

    -

    -

    getwords

    1752

    1538

    0x10a; 10A16 =26610

    abcd2

    2066

    2064

    0xd7; D716 =21510



    • cat abcd2_map







    1. Добавьте в make-файл, разработанный при выполнении п.5, два новых правила, реализующие п. 16 и 18 задания. Проверьте корректность его работы.









    Программа работает исправно







    Программа работает исправно



    написать администратору сайта