Отладка с помощью GDB - Обзор GDB
[Содержание] [Назад] [Пред] [Вверх] [След] [Вперед]Обзор GDB
Назначение отладчика, такого как GDB---позволить вам увидеть, что происходит "внутри" другой программы во время ее выполнения, или что делала другая программа в момент краха.
GDB может выполнять действия четырех основных типов (а также другие, поддерживающие эти основные), чтобы помочь вам выявить ошибку:
- Начать выполнение вашей программы, задав все, что может повлиять на ее поведение.
- Остановить вашу программу при указанных условиях.
- Исследовать, что случилось, когда ваша программа остановилась.
- Изменить вашу программу, так что вы можете экспериментировать с устранением эффектов одной ошибки и продолжить выявление других.
Вы можете использовать GDB для отладки программ, написанных на Си и Си++. Для получения более подробной информации, смотрите раздел 9.4 Поддерживаемые языки. Для дополнительной информации, смотрите раздел 9.4.1 Си и Си++.
GDB частично поддерживает языки Модула-2 и Chill. Для получения информации о Модуле-2, смотрите раздел 9.4.2 Модула-2. Для получения информации о Chill, см. раздел 9.4.3 Chill
Отладка программ на Паскале, которые используют множества, поддиапазоны, файловые переменные или вложенные функции, в настоящее время не работает. GDB не поддерживает ввод выражений, вывод значений, и аналогичные возможности, использующие синтаксис Паскаля.
GDB может использоваться для отладки программ, написанных на Фортране, хотя может возникнуть необходимость ссылаться на некоторые переменные с использованием знака подчеркивания на конце.
Свободно распространяемые программы
GDB---свободная программа, защищенная Универсальной Общественной Лицензией GNU (GPL). GPL предоставляет вам свободу копировать или изменять программу, но каждый человек, получая копию, также получает свободу изменять эту копию (это означает, что он должен получить доступ к исходному коду), и свободу распространять последующие копии. Обычные компании, разрабатывающие программы, используют авторские права для ограничения ваших свобод; Фонд Свободного Программного Обеспечения использует GPL для сохранения этих свобод.
Главное, Универсальная Общественная Лицензия--это лицензия, говорящая, что вы имеете эти свободы и что вы не можете их у кого-либо отнять.
Кто внес вклад в развитие GDB
Первоначальным автором GDB, как и многих других программ GNU, был Ричард Столмен. Многие другие люди внесли вклад в его разработку. Этот раздел пытается отдать должное основным участникам разработки. Одним из достоинств свободных программ является то, что любой человек имеет свободу делать вклад в их развитие; к сожалению, мы не можем в действительности поблагодарить здесь всех. Файл `ChangeLog' в поставке GDB представляет детальнейший отчет.
Изменения, сделанные задолго до версии 2.0 потеряны в тумане времен.
Оправдание: Дополнения к этому разделу особенно приветствуются. Если вы или ваши друзья (или враги, чтобы соблюдать справедливость) были незаслуженно пропущены в этом списке, мы будем рады добавить ваши имена!
Особенно мы хотим сказать спасибо тем, кто присматривал за GDB между основными выпусками, чтобы они не сочли свои многочисленные заслуги оставленными без благодарности: Эндрю Кагни (выпуск 5.0); Джим Бленди (выпуск 4.18); Джесон Моленда (выпуск 4.17); Стан Шебс (выпуск 4.14); Фред Фиш (выпуски 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, и 4.9); Сту Гроссман и Джон Гилмор (выпуски 4.8, 4.7, 4.6, 4.5, и 4.4); Джон Гилмор (выпуски 4.3, 4.2, 4.1, 4.0, и 3.9); Джим Кингдон (выпуски 3.5, 3.4, и 3.3) и Ренди Смит (выпуски 3.2, 3.1, и 3.0).
Ричард Столмен, которому в различные времена помогали Петер ТерМаат, Крис Хенсон и Ричард Млинарик, занимался выпусками до 2.8.
Михаэль Тиманн является автором большей части поддержки GNU Си++ в GDB, со значительным дополнительным вкладом от Пера Бозера. Джеймс Кларк написал дешифровщик(1) имен GNU Си++. Ранняя работа по Си++ была сделана Петером ТерМаатом (который также сделал много общей работы по обновлению, приведшей к выпуску 3.0).
Для исследования многих форматов объектных файлов, GDB 4 использует библиотеку подпрограмм BFD. BFD был совместным проектом Дэвида В. Хенкел-Волласа, Рича Пиксли, Стива Чемберлена, и Джона Гилмора.
Дэвид Джонсон первоначально написал поддержку COFF; Пейс Виллисон первоначально сделал поддержку инкапсулированного COFF.
Брент Бенсон из Harris Computer Systems сделал поддержку DWARF 2.
Адам ДеБур и Брэндли Дэвис сделали поддержку ISI Optimum V. Пер Бозер, Нобоюки Хикичи, и Алессандро Форин сделали поддержку MIPS. Жан-Даниэль Фекет сделал поддержку Sun 386i. Крис Хенсон улучшил поддержку HP9000. Нобоюки Хикичи и Томоюки Хаси сделали поддержку Sony/News OS 3. Дэвид Джонсон сделал поддержку Encore Umax. Юрки Куоппала сделал поддержку Altos 3068. Джефф Ло сделал поддержку HP PA и SOM. Кейс Паккард сделал поддержку NS32K. Доуг Ребсон сделал поддержку Acorn Risc Machine. Боб Раск сделал поддержку Harris Nighthawk CX-UX. Крис Смит сделал поддержку Convex (и отладку программ на Фортране). Джонатан Стоун сделал поддержку Pyramid. Михаэль Тиманн сделал поддержку SPARC. Тим Такер сделал поддержку для Gould NP1 и Gould Powernode. Пейс Виллисон сделал поддержку Intel 386. Джей Восбург сделал поддержку Symmetry.
Андреас Шваб сделал поддержку M68K Linux.
Рич Шаефер и Петер Шауер помогли реализовать поддержку разделяемых библиотек SunOS.
Джей Фенласон и Роланд МакГрес проверили совместимость GDB и GAS по нескольким наборам машинных инструкций.
Патрик Дювал, Тед Голдстейн, Викрам Кока и Гленн Инжел помогли разработать удаленную отладку. Intel Corporation, Wind River Systems, AMD и ARM сделали модули удаленной отладки для целей i960, VxWorks, A29K UDI, и RDI соответственно.
Брайан Фокс является автором библиотек Readline, предоставляющих историю команд и возможность редактирования командной строки.
Эндрю Бирс из SUNY Buffalo написал код для переключения языков, поддержку Модулы-2, главу `Языки' этого руководства.
Фред Фиш написал большую часть поддержки Unix System Vr4. Он также улучшил поддержку завершения команд для поддержки перегруженных символов Си++.
Hitachi America, Ltd. спонсировала поддержку для процессоров H8/300, H8/500 и Super-H.
NEC спонсировала поддержку процессоров v850, Vr4xxx и Vr5xxx.
Mitsubishi спонсировала поддержку процессоров D10V, D30V и M32R/D.
Toshiba спонсировала поддержку процессора TX39 Mips.
Matsushita спонсировала поддержку процессоров MN10200 и MN10300.
Fujitsu спонсировала поддержку процессоров SPARClite и FR30.
Кунг Шу, Джефф Ло и Рик Слэдки добавили поддержку аппаратных точек наблюдения.
Михаэль Снайдер добавил поддержку точек трассировки.
Сту Гроссман написал gdbserver.
Джим Кингдон, Петер Шауер, Ян Тейлор и Сту Гроссман сделали почти бесчисленное количество исправлений и улучшений во всем GDB.
Следующие люди из Hewlett-Packard Company сделали поддержку архитектуры PA-RISC 2.0, HP-UX 10.20, 10.30 и 11.0 (усеченный режим), реализации нитей HP в ядре, компилятора HP aC++, и конечного интерфейса пользователя: Бен Крепп, Ричард Тайтл, Джон Бишоп, Сюзан Макчиа, Кэси Манн, Сэтиш Пай, Индиа Поул, Стив Рейраур и Елена Заннони. Ким Хаас предоставил специфичную для HP информацию для этого руководства.
Cygnus Solutions спонсировала поддержку GDB и большую часть его развития с 1991 года. Среди инженеров Cygnus, работавших над GDB на постоянной основе, Марк Александер, Джим Бленди, Пер Бозер, Кевин Беттнер, Эдит Эпштейн, Крис Фейлор, Фред Фиш, Мартин Хант, Джим Ингам, Джон Гилмор, Сту Гроссман, Кунг Шу, Джим Кингдон, Джон Мецлер, Фернандо Нассер, Джеффри Ноер, Дон Перчик, Рич Пиксли, Зденек Радуч, Кейс Сейц, Стан Шебс, Дэвид Тейлор и Елена Заннони. Кроме того, Дейв Бролли, Ян Кармихаэль, Стив Чемберлен, Ник Клифтон, Джэй Ти Конклин, Стен Кокс, Ди Джей Делори, Ульрих Дреппер, Фрэнк Эйглер, Дуг Эванс, Син Фаган, Дэвид Хенкель-Воллас, Ричард Хендерсон, Джефф Холком, Джефф Ло, Джим Лемке, Том Лорд, Боб Мансон, Михаэль Мейсснер, Джейсон Меррилл, Кэтрин Мур, Дрю Мосли, Кен Робурн, Гавин Ромиг-Кох, Роб Савой, Джейми Смит, Майк Стамп, Ян Тейлор, Анжела Томас, Михаэль Тиманн, Том Тромей, Рон Унро, Джим Вилсон и Дэвид Зун также сделали свой вклад в большей или меньшей степени.
[Содержание] [Назад] [Пред] [Вверх] [След] [Вперед]