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

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>