Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Отладчик GDB




Ассемблеры gas и nasm

Использование языка ассемблера в Linux происходит гораздо реже, чем, например, в DOS. Драйверы устройств в Linux гораздо чаще пишутся на языке C, а затем обрабатываются оптимизирующим компилятором, например, gcc. Однако, если вам непременно требуется ассемблер, его можно использовать. Основная причина, по которой используется ассемблер в Linux ‑ это написание очень небольших по размеру программ, которые не зависят от системных библиотек. Такие программы особенно нужны для встраиваемых систем, где объемы запоминающих устройств обычно невелики.

GAS - это сокращение от GNU Assembler. Поскольку GAS был разработан для поддержки 32-битных компиляторов Unix, он использует стандартный синтаксис ATT, который несколько отличается от обычного ассемблера DOS.

Ассемблер NASM разрабатывается в рамках проекта The Netwide Assembler, и представляет собой мощный ассемблер на базе i386, написанный на C, который построен по модульному принципу и обеспечивает поддержку практически всех известных синтаксисов и форматов объектных файлов. Используется синтаксис Intel. Поддерживается обработка макроопределений. Среди поддерживаемых форматов объектных файлов есть bin, aout, coff, elf, as86, obj (DOS), win32, rdf (собственный формат). Кроме того, NASM поставляется с дизассемблером NDISASM.

Отладчиком называется программа, которая выполняет внутри себя другую программу. Основное назначение отладчика ‑ дать возможность пользователю в определенной степени осуществлять контроль за выполняемой программой, т.е. определять, что происходит в процессе ее выполнения. Наиболее известным отладчиком для Linux является программа GNU GDB, которая содержит множество полезных возможностей, но для простой отладки достаточно использовать лишь некоторые из них.

Когда запускается программа, содержащая ошибки, обнаруживаемые лишь на стадии выполнения, возникают несколько вопросов, на которые автору нужно найти ответ:

Какое выражение или оператор в программе вызывает ошибку? Если ошибка возникает в результате вызова функции, в каком месте программы происходит этот вызов? Какие значения содержат переменные и параметры программы в определенной точке ее выполнения? Что является результатом вычисления выражения в определенном месте программы? Каков действительный порядок выполнения операторов программы?

Эти действия требуют, чтобы пользователь отладчика был в состоянии:

1. проанализировать данные программы;

2. получить трассу - список вызовов функций, которые были выполнены, с сортировкой, указывающей, кто кого вызывал;

3. установить точки останова, в которых выполнение программы приостанавливается, чтобы можно было проанализировать данные;

4. выполнять программу по шагам, чтобы увидеть, что в действительности происходит.

Программа gdb предоставляет все перечисленные возможности. Она называется отладчиком на уровне исходного текста, создавая иллюзию, что выполняются операторы из программы, а не машинный код, в который они действительно транслируются.

Чтобы указать компилятору (gcc), что планируется отладка программы (а для этого в коде программы должна быть дополнительная информация), следует добавить ключ -g в опции компиляции и компоновки. Например, если программа состоит из двух файлов main.C и utils.C, можно откомпилировать ее командами:

gcc -c -g -Wall main.C gcc -c -g -Wall utils.C gcc -g -o myprog main.ob utils.o

или одной командой:

gcc -g -Wall -o myprog main.o utils.o

Обе последовательности команд приводят к созданию исполняемого файла myprog.

Чтобы выполнить полученную программу под управлением gdb, следует ввести команду

gdb myprog

Отладчик напечатает приглашение на ввод команды и начнет работу в интерактивном режиме, выполняя каждую команду пользователя. Это очень простой, но эффективный текстовый интерфейс отладчика. Список команд отладчика и пример работы с ним приводится в лабораторной работе №4.




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 780; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.