мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
asm:gdb [14/02/2012 20:12] – создано arabusov | asm:gdb [20/11/2013 22:50] (текущий) – arabusov | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== GDB ===== | ===== GDB ===== | ||
- | Рассмотрим код | + | Подробнее [[http:// |
- | [code=asm];Точка входа " | + | |
+ | Рассмотрим код: | ||
+ | <code=asm>;Точка входа " | ||
;в подключаемом *.o файле стандартной библиотеки Си | ;в подключаемом *.o файле стандартной библиотеки Си | ||
;Она передает управление на функцию " | ;Она передает управление на функцию " | ||
; | ; | ||
- | global main | + | global main |
; | ; | ||
- | section .text | + | section .text |
; | ; | ||
- | main: | + | main: |
- | mov rax,6 | + | mov rax,6 |
- | mov rbx,3 | + | mov rbx, |
- | add rax,rbx | + | add rax, |
the_end: | the_end: | ||
- | mov rax,1 | + | mov rax,1 |
- | int 0x80 | + | int 0x80 |
+ | |||
+ | ret | ||
+ | |||
+ | </ | ||
+ | Ассемблируем и собираем программу: | ||
+ | < | ||
+ | user@host ~/ | ||
+ | user@host ~/ | ||
+ | Запускаем **gdb**: | ||
+ | < | ||
+ | GNU gdb (Ubuntu/ | ||
+ | Copyright (C) 2011 Free Software Foundation, Inc. | ||
+ | License GPLv3+: GNU GPL version 3 or later < | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. Type "show copying" | ||
+ | and "show warranty" | ||
+ | This GDB was configured as " | ||
+ | For bug reporting instructions, | ||
+ | < | ||
+ | Reading symbols from / | ||
+ | (gdb) | ||
+ | </ | ||
+ | Устанавливаем точки останова: | ||
+ | < | ||
+ | Breakpoint 1 at 0x4004c0 | ||
+ | (gdb) b the_end | ||
+ | Breakpoint 2 at 0x4004d7 | ||
+ | (gdb) | ||
+ | </ | ||
+ | Далее можно использовать следующие команды: | ||
+ | * //r// -- выполнение до точки останова | ||
+ | * //ni// или //si// -- пошаговое выполнение | ||
+ | * //p $rax// -- показать содержимое регистра //rax// | ||
+ | * //info registers// -- показать информацию обо всех регистрах | ||
+ | Кроме регистров у нас есть память, | ||
- | ret | + | ===== Задание ===== |
- | [/code] | + | Напишите собственную программу, |