Komenda x
będzie najłatwiejszym sposobem wyświetlania wartości w pamięci Spróbuj na przykład:.
(gdb) x/32b $ebp
Jeśli to nie zadziała (zwłaszcza jeśli pojawi się błąd, że "wartość nie może zostać przekonwertowana na liczbę całkowitą"), prawdopodobnie debugujesz 64-bitowy plik wykonywalny, a rejestry x86-64 mają różne nazwy, użyj zamiast tego $rbp
.
Znaki po ukośniku w poleceniu x
określ, ile wartości są wyświetlane i jaki format jest używany.spróbuje na przykład odczytać ciąg znaków z tego adresu. Jeśli nic nie używasz, gdb użyje tego, co ostatnio używałeś.
Chociaż nie jest to bezwzględnie konieczne, aby odpowiedzieć na pytanie, jakie stały się niektóre z innych komend, że próbujesz uruchomić:
p *((char *) $ebp) <- treat $ebp as a character pointer and display what it points to
p *((char *) $ebp + 4) <- with an offset
p ((char *) $ebp)[4] <- same thing as above, except using array syntax
$
postać jest potrzebne tylko wtedy, gdy odnosi się do rejestrów, lub do zmiennych gdb. Nie potrzebujesz go do niczego innego.
Powiązane: http://stackoverflow.com/questions/12758217/printing-string-pointed-to-from-register-in-gdb –