Perintah x
Menampilkan isi memori di alamat tertentu menggunakan format yang ditentukan.
Sintaks
x [Ekspresi Alamat]
x /[Format] [Ekspresi Alamat]
x /[Panjang][Format] [Ekspresi Alamat]
x
x /[Format] [Ekspresi Alamat]
x /[Panjang][Format] [Ekspresi Alamat]
x
Parameter
- Ekspresi Alamat
- Menentukan alamat memori yang isiannya akan ditampilkan. Ini bisa berupa alamat itu sendiri atau ekspresi C/C++ yang mengevaluasi ke alamat. Ekspresi dapat mencakup register (misalnya $eip) dan pseudoregister (misalnya $pc). Jika ekspresi alamat tidak ditentukan, perintah akan terus menampilkan isi memori dari alamat di mana perintah sebelumnya berakhir.
- Format
- Jika ditentukan, memungkinkan untuk mengganti format keluaran yang digunakan oleh perintah ini. Penyebut format yang valid adalah:
- o - oktal
- x - heksadesimal
- d - desimal
- u - desimal tanpa tanda
- t - biner
- f - titik mengambang
- a - alamat
- c - karakter
- s - string
- i - instruksi
Modifier ukuran berikut didukung:
- b - byte
- h - setengah kata (nilai 16-bit)
- w - kata (nilai 32-bit)
- g - kata raksasa (nilai 64-bit)
- Panjang
- Menentukan jumlah elemen yang akan ditampilkan oleh perintah ini.
Contoh
Kami akan mendemonstrasikan penggunaan perintah x menggunakan program dasar yang mendefinisikan sebuah array byte di stack:
int main() { char testArray[] = "0123456789ABCDEF"; return 0; }
Sekarang kita akan menggunakan perintah x untuk menampilkan isi memori yang diisi oleh array testArray dalam berbagai format. Kami juga akan menunjukkan cara menggunakan perintah x untuk mendisassemble instruksi yang ditunjuk oleh pseudoregister program counter ($pc).
(gdb) start Breakpoint sementara 1 di 0x8048446: file test.cpp, baris 2. Starting program: /home/bazis/test Breakpoint sementara 1, main () di test.cpp:2 2 { (gdb) next 3 char testArray[] = "0123456789ABCDEF"; (gdb) next 4 return 0; (gdb) x testArray 0xbfffef7b: 0x33323130 (gdb) x/c testArray 0xbfffef7b: 48 '0' (gdb) x/5c testArray 0xbfffef7b: 48 '0' 49 '1' 50 '2' 51 '3' 52 '4' (gdb) x/2c 0xbfffef80: 53 '5' 54 '6' (gdb) x/wx testArray 0xbfffef7b: 0x33323130 (gdb) x/2hx testArray 0xbfffef7b: 0x3130 0x3332 (gdb) x/gx testArray 0xbfffef7b: 0x3736353433323130 (gdb) x/s testArray 0xbfffef7b: "0123456789ABCDEF" (gdb) x/5bx testArray 0xbfffef7b: 0x30 0x31 0x32 0x33 0x34 (gdb) x/5i $pc => 0x8048477: mov $0x0,%eax 0x804847c : mov 0x1c(%esp),%edx 0x8048480 : xor %gs:0x14,%edx 0x8048487 : je 0x804848e 0x8048489 : call 0x8048310 <__stack_chk_fail@plt>