Witam,
Próbuje sobie poradzić z następującym zagadnieniem tzn. mam program napisany w NASM ,kompilowany za pomocą następujących poleceń:

all:
nasm -f elf main.asm
gcc -o main main.o -g

Program uruchamiam tak jak program w C
$ gdb main
Mogę ustawić break na dowolną etykietę (na linię kodu już nie, gdyż nie może odnaleźć symbolu) może to być na przykład etykieta 'petla'. Mogę wyświetlać aktualny stan rejestrów za pomocą polecenia 'info registers'. Mogę wykonywać go krok po kroku korzystając z polecenia nexti. Nie jest to jednak wygodne, mam więc kilka pytań.

  1. Czy możliwe jest, aby GDB wyświetlało następną linię kodu/ instrukcję asemblera, podobnie jak step dla programów C? Idealnie robi to program w C (nawet dla nexti):

(gdb) nexti
0x08048604 9 fprintf(stderr, "Usage: %s -value [0-255] source target\n", argv[0]);
(gdb) nexti
0x08048609 9 fprintf(stderr, "Usage: %s -value [0-255] source target\n", argv[0]);
(gdb) nexti
0x0804860e 9 fprintf(stderr, "Usage: %s -value [0-255] source target\n", argv[0]);
(gdb) nexti
0x08048612 9 fprintf(stderr, "Usage: %s -value [0-255] source target\n", argv[0]);
(gdb) nexti
0x08048616 9 fprintf(stderr, "Usage: %s -value [0-255] source target\n", argv[0]);
(gdb) nexti
0x08048619 9 fprintf(stderr, "Usage: %s -value [0-255] source target\n", argv[0]);

  1. Jak to zrobić?

Bardzo ułatwiłoby mi to debugowanie obliczeń. Chociaż teraz jak sobie myślę zastanawiam się czy nie prościej napisać sobie oddzielne funkcje debugujące zrzucające dane z rejestrów na standardowe wyjście.

Pozdrawiam,