Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. - Инструментальные средства разработки ПО в ОС UNIX

С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. - Инструментальные средства разработки ПО в ОС UNIX, страница 4

PDF-файл С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. - Инструментальные средства разработки ПО в ОС UNIX, страница 4 Операционные системы (37374): Книга - 3 семестрС.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. - Инструментальные средства разработки ПО в ОС UNIX: Операционные системы - PDF, страница 4 (3732019-05-08СтудИзба

Описание файла

PDF-файл из архива "С.В. Герасимов, И.В. Машечкин, М.И. Петровский и др. - Инструментальные средства разработки ПО в ОС UNIX", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 4 страницы из PDF

В этих случаях можноподключиться к работающей программе отладчиком. Отладчик GDBв этом случае запускается с двумя аргументами: первый — это имяисполняемого файла, второй аргумент — число – идентификаторпроцесса (PID). Примерный сценарий работы с отладчикомприведен ниже.$ gdb ./ej-users 7096программа называется ej-users иработает как процесс 7096GNU gdb (GDB) Fedora (7.2-51.fc14)Copyright (C) 2010 Free Software Foundation, Inc.18License GPLv3+: GNU GPL version 3 or later<http://gnu.org/licenses/gpl.html>This is free software: you are free to change andredistribute it.There is NO WARRANTY, to the extent permitted by law.Type "show copying"and "show warranty" for details.This GDB was configured as "i686-redhat-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>...Reading symbols from /home/cher/ejudge/ej-users...done.Attaching to program: /home/cher/ejudge/ej-users, process70960xb78c1424 in __kernel_vsyscall ()выполнениепрограммы приостановлено в этой точке(gdb) btпечатаем стек вызовов функций#0 0xb78c1424 in __kernel_vsyscall ()#1 0x00a8788d in ___newselect_nocancel ()at ../sysdeps/unix/syscall-template.S:82#2 0x0806e502 in do_work () at userlist-server.c:10244#3 0x0806fee5 in main (argc=5, argv=0xbfb06754) atuserlist-server.c:10816(gdb) up 2поднимаемся на два уровня вверх постеку вызовов#2 0x0806e502 in do_work () at userlist-server.c:1024410244val = select(max_fd, &rset, &wset, NULL,&timeout);(gdb) p max_fdпечатаем значение переменной max_fd$1 = 7значение переменной равно 7(gdb) quitзавершаем отладкуA debugging session is active.Inferior 1 [process 7096] will be detached.Quit anyway? (y or n) yподтверждаем завершениеотладки, программа продолжит выполнениеDetaching from program: /home/cher/ejudge/ej-users,process 7096$«Посмертная» отладкаПосле аварийного завершения программы, например, врезультате попытки доступа к области памяти, не принадлежащейпроцессу, либо при делении на 0, либо при вызове функции abort(),19еще остается возможность узнать состояние, в котором находиласьпрограмма в момент ошибки.Для этого при аварийном завершении программы ядром ОСдолжен быть сгенерирован файл дампа памяти аварийнозавершившейся программы (так называемый core-файл).

Созданиеcore-файлов может быть по умолчанию отключено. Например,$ ./progHello, I'm Eddie!Abortedзавершилось, но core-файла нет$запускаем программувыполнение программы аварийноДля того, чтобы разрешить создание core-файлов нужно снятьограничение на максимальный размер core-файлов.$ ulimit -c unlimitedТогда работа программы может выглядеть примерно так:$ ./progHello, I'm Eddie!Aborted (core dumped)$ lsкаталогеcore.7911 prog prog.c$запускаем программусмотрим список файлов в текущемпоявился core-файл core.7911В данном примере имя core-файла включает в себя PIDпроцесса, при завершении которого был создан core-файл, но иногдатакой файл называется просто core.Для посмертной отладки GDB запускается с двумяаргументами: первый — это имя исполняемого файла, а второй —это имя core-файла.

Примерный сценарий работы с отладчиком вэтом случае приведен ниже.$ gdb ./prog core.7911запускаем посмертную отладкуGNU gdb (GDB) Fedora (7.2-51.fc14)Copyright (C) 2010 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later<http://gnu.org/licenses/gpl.html>This is free software: you are free to change andredistribute it.20There is NO WARRANTY, to the extent permitted by law.Type "show copying"and "show warranty" for details.This GDB was configured as "i686-redhat-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>...Reading symbols from /home/cher/gdb/prog...done.[New Thread 7911]Core was generated by `./prog'.Program terminated with signal 6, Aborted.#0 0xb782a424 in __kernel_vsyscall ()(gdb) btпросматриваем стек вызовов#0 0xb782a424 in __kernel_vsyscall ()#1 0x009e32f1 in raise (sig=6) at../nptl/sysdeps/unix/sysv/linux/raise.c:64#2 0x009e4d5e in abort () at abort.c:92#3 0x080483fe in main () at prog.c:6(gdb) quitзавершаем отладку$Основные команды отладчикаНиже описываются основные команды отладчика GDB.Команды вводятся с консоли после отображения отладчиком “(gdb)”– строки-приглашения ко вводу очередной команды.quit – завершение работы отладчика.

Если программазапускалась из-под отладчика (первый способ отладки), то вместе сзавершением отладки завершится и программа. Если отладчикподключался к работающей программе, то программа продолжитвыполнение в обычном режиме. Если отладчик запускался дляисследования core-файла, то отладчик просто завершается, так какникакого отлаживаемого процесса не существует. Вместо наборакоманды quit можно просто нажать комбинацию Ctrl-D –стандартная комбинация, обозначающая признак конца файла(конец ввода) в Unux.run – запустить программу на выполнение. Команда доступнатолько, если программа еще не запущена.

При подключении кработающему процессу или исследовании core-файлов даннаякоманда не доступна. Допускается указывать аргументы команднойстроки и перенаправление потоков ввода-вывода, как если быпрограмма запускалась командным процессором. Пример:21(gdb) run < 001.in > 001.outЗдесь программа запускается на выполнение с файлом 001.in,перенаправленным на стандартный поток ввода, и файлом 001.out, вкоторый перенаправляется вывод на стандартный поток вывода.Выполнение программы может быть прервано в любой моментнажатием на комбинацию Ctrl-C. Отладчик приостановитвыполнение программы и выдаст приглашение ко вводу очереднойкоманды отладчика.Выполнение программы также приостанавливается приполучении программой любого сигнала, при завершении программылибо достижении точки останова.bt (или backtrace) – распечатать стек вызовов.

Стек вызововпечатается от самой вложенной функции к функции main. Длякаждого стекового фрейма печатается адрес в коде точки вызова,название функции и параметры, переданные в функцию, а такжепозиция в исходном коде. Команда bt full дополнительно печатаетзначения локальных переменных.(gdb) bt full#0 0xb78c1424 in __kernel_vsyscall ()No symbol table info available.#1 0x00a8788d in ___newselect_nocancel ()at ../sysdeps/unix/syscall-template.S:82No locals.#2 0x0806e502 in do_work () at userlist-server.c:10244addr = {sun_family = 1,sun_path = "\000\060\060\060\071b", '\000'<repeats 101 times>}val = 0max_fd = 7timeout = {tv_sec = 0, tv_usec = 702429}rset = {fds_bits = {80, 0 <repeats 31 times>}}wset = {fds_bits = {0 <repeats 32 times>}}p = 0x0q = 0x9286e68saved_fd = 6up – переход на указанное количество фреймов вверх по стекувызовов функций.

Если аргумент у команды не указан, он22принимается равным 1 (переход на один фрейм вверх, то естьпереход к функции, которая вызвала текущую функцию).down – переход на указанное количество фреймов вниз постеку вызовов функций. Если аргумент у команды не указан, онпринимается равным 1 (переход на один фрейм вниз, то есть переходк функции, которая была вызвана в текущей точке текущейфункции).info frame – получить информацию о текущем стековомфрейме.info locals – получить информацию о значениях локальныхпеременных текущего стекового фрейма.p (или print) – напечатать значение выражения.

Аргументомкоманды может быть почти произвольное выражение языка Си, дажевключающее в себя вызовы функций программы, если, конечно,отлаживаемый процесс существует. Таким образом, вызовыфункций недоступны при «посмертной» отладке. Если аргументкоманды не указан, берется аргумент, который был указан в командеp в последний раз.(gdb) p userпечатаем значение переменной user$1 = (const unsigned char *) 0x0(gdb) pеще раз печатаем значение переменной user$2 = (const unsigned char *) 0x0(gdb)l (или list) – напечатать исходный код. Команду можноиспользовать во многих вариантах, часть из которых перечисленаниже.(gdb)(gdb)(gdb)файла(gdb)(gdb)(gdb)ll l 200напечатать очередные 10 строк исходного файланапечатать предыдущие 10 строк исходного файланапечатать 10 строк в окрестности 200 строки текущегоl prog.c:200l mainl *0x0806e502напечатать 10 строк в окрестности 200 строки файла prog.cнапечатать 10 строк в окрестности начала функции mainнапечатать 10 строк в окрестности кода по указанному адресуb (или break) – установка точки останова.

Параметромкоманды является точка в программе, помечаемая как точкаостанова. Команду можно использовать во многих вариантах, частьиз которых перечислена ниже.23(gdb)(gdb)(gdb)(gdb)bbbbmain200prog.c:200*0x0806e502установить точку останова в начале функции mainустановить точку останова на 200 строке текущего файлаустановить точку останова на 200 строке файла prog.cустановить точку останова по указанному адресуc (или continue) – продолжить выполнение программы.finish — продолжить выполнение программы до достиженияконца текущей функцииn (или next) — сделать указанное количество шаговвыполнения (по умолчанию 1).

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
426
Средний доход
с одного платного файла
Обучение Подробнее