мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
asm:gdb [14/02/2012 20:25] arabusovasm:gdb [20/11/2013 22:50] (текущий) arabusov
Строка 1: Строка 1:
 ===== GDB ===== ===== GDB =====
-Рассмотрим код+Подробнее [[http://wasm.ru/article.php?article=asm_linux_for_c#chapter.gdb|здесь]]; на текущей странице представлена сжатая версия для занятия с учётом специфики ассемблера **nasm**. 
 + 
 +Рассмотрим код:
 <code=asm>;Точка входа "_start" на самом деле находится  <code=asm>;Точка входа "_start" на самом деле находится 
 ;в подключаемом *.o файле стандартной библиотеки Си ;в подключаемом *.o файле стандартной библиотеки Си
Строка 28: Строка 30:
 user@host ~/asm/example $ gcc example.o -o example -g user@host ~/asm/example $ gcc example.o -o example -g
 user@host ~/asm/example $ </code> user@host ~/asm/example $ </code>
-Запускаем gdb:+Запускаем **gdb**:
 <code=bash>user@host ~/asm/example $ gdb ./example <code=bash>user@host ~/asm/example $ gdb ./example
 GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08 GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08
Строка 51: Строка 53:
 Далее можно использовать следующие команды: Далее можно использовать следующие команды:
   * //r// -- выполнение до точки останова   * //r// -- выполнение до точки останова
-  * //n// -- пошаговое выполнение+  * //ni// или //si// -- пошаговое выполнение
   * //p $rax// -- показать содержимое регистра //rax//   * //p $rax// -- показать содержимое регистра //rax//
   * //info registers// -- показать информацию обо всех регистрах   * //info registers// -- показать информацию обо всех регистрах
 Кроме регистров у нас есть память, и частный случай памяти — стек. Как их посмотреть? Команда //x/формат адрес// отображает содержимое памяти, расположенной по адресу в заданном формате. Формат это (в таком порядке) количество элементов, буква формата, и размер элемента. Буквы формата: o(octal), x(hex), d(decimal), u(unsigned decimal), t(binary), f(float), a(address), i(instruction), c(char) and s(string). Размер: b(byte), h(halfword), w(word), g(giant, 8 bytes). Кроме регистров у нас есть память, и частный случай памяти — стек. Как их посмотреть? Команда //x/формат адрес// отображает содержимое памяти, расположенной по адресу в заданном формате. Формат это (в таком порядке) количество элементов, буква формата, и размер элемента. Буквы формата: o(octal), x(hex), d(decimal), u(unsigned decimal), t(binary), f(float), a(address), i(instruction), c(char) and s(string). Размер: b(byte), h(halfword), w(word), g(giant, 8 bytes).
 +
 +===== Задание =====
 +Напишите собственную программу, выполняющую арифметические или логические действия с содержимым регистров. Результат выполнения проконтролируйте с помощью отладчика **gdb**