Основы программирования в Linux
Шрифт:
Сам по себе отладчик gdb — приложение, выполняющееся в текстовом режиме, но он предоставляет несколько сокращенных клавишных команд для выполнения повторяющихся задач. Во многих версиях есть редактирование в командной строке с хронологией команд, так что вы можете прокрутить список назад и выполнить ту же команду снова (попробуйте воспользоваться клавишами перемещения курсора). Все версии отладчика поддерживают "пустую команду"; нажатие клавиши <Enter>
Для завершения работы gdb применяйте команду
Выполнение программы
Выполнить программу можно с помощью команды
Предположим, что ваша система, как и системы обоих авторов, теперь генерирует сообщение о нарушении сегментации памяти. Если нет, читайте дальше. Вы узнаете, что делать, когда одна из ваших программ действительно сгенерирует сообщение о нарушении сегментации. Если вы не получили такого сообщения, но хотите поработать с этим примером во время чтения книги, когда первая из проблем, связанных с доступом к памяти, будет устранена, можно взять программу из файла debug4.c.
Программа, как и прежде, выполняется неверно. Когда программа дает сбой, gdb указывает причину и местонахождение. Теперь вы можете выяснять первопричину проблемы.
В зависимости от ядра вашей системы, версий библиотеки С и компилятора сбой программы может произойти в другом месте, например в строке 25, когда элементы массива меняются местами, а не в строке 23, когда сравниваются поля
Вы все равно можете продолжать следить за примером сеанса работы gdb, который описывается далее.
Трассировка стека
Программа была остановлена при выполнении функции
Увидеть, как вы добрались до этого места, можно с помощью команды
Это
У команды
Просмотр переменных
Отладчик вывел данные в момент остановки программы, и в трассировке стека показаны значения аргументов функции.
Функция
Сбойная строка 23 — сравнение одного элемента массива с другим:
Отладчик можно применять для просмотра содержимого параметров функции, локальных переменных и глобальных данных. Команда
Вы видите, что у локальной переменной
Значение переменной
У массива
Если ваша программа завершилась в строке 25, система обнаружила чтение за пределами массива, только когда взялась за перестановку элементов массива, выполнив оператор
который при
Просмотреть элементы передаваемого массива можно, применив выражение в команде
Путеводитель по Библии (Ветхий завет. Новый завет)
Религия и эзотерика:
религия
рейтинг книги
Последний Паладин. Том 10
10. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Туман. Авель Санчес; Тиран Бандерас; Салакаин отважный. Вечера в Буэн-Ретиро
141. Библиотека всемирной литературы
Проза:
классическая проза
рейтинг книги
Газлайтер. Том 1
1. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
AntiBoyarЪ. Трилогия
AntiBoyarЪ
Фантастика:
фэнтези
попаданцы
альтернативная история
рейтинг книги
Трактат об электричестве и магнетизме
146. Классики науки
Научно-образовательная:
прочая научная литература
физика
рейтинг книги
Александр Иванович Шокин. Портрет на фоне эпохи
6. Созидатели отечественной электроники
Документальная литература:
биографии и мемуары
рейтинг книги
Ветхий Завет. Перевод и комментарии
Религия и эзотерика:
прочая религиозная литература
рейтинг книги
Лекарь
2. Травник
Фантастика:
фэнтези
рейтинг книги
Антипсихология
Научно-образовательная:
психология
рейтинг книги
В лапах зверя
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
рейтинг книги
Кенди
Детские:
прочая детская литература
рейтинг книги