Perintah display
Memungkinkan tampilan otomatis ekspresi tertentu setiap kali GDB berhenti di breakpoint atau setelah langkah demi langkah.
Sintaks
display [Ekspresi]
x /[Format] [Ekspresi]
display
x /[Format] [Ekspresi]
display
Parameter
- Ekspresi
- Menentukan ekspresi yang akan dievaluasi secara otomatis dan ditampilkan setelah setiap langkah. Jalankan perintah display tanpa argumen untuk menampilkan daftar ekspresi yang saat ini diaktifkan untuk tampilan otomatis.
- Format
- Jika ditentukan, memungkinkan untuk mengganti format output yang digunakan oleh perintah. Spesifikasi format yang valid antara lain:
- o - oktal
- x - heksadesimal
- d - desimal
- u - desimal tak bertanda
- t - biner
- f - floating point
- a - alamat
- c - karakter
- s - string
- i - instruksi
Dukungan untuk modifier ukuran berikut:
- b - byte
- h - halfword (nilai 16-bit)
- w - word (nilai 32-bit)
- g - giant word (nilai 64-bit)
Catatan
Untuk menghapus ekspresi dari daftar tampilan otomatis, gunakan perintah undisplay.
Contoh
Kami akan menunjukkan penggunaan perintah display menggunakan program dasar yang menampilkan argumennya dalam sebuah loop:
#include <stdio.h> int main(int argc, char **argv) { for(int i = 0; i < argc; i++) printf("Arg %d: %s\n", i, argv[i]); return 0; }
Kami akan menggunakan perintah display untuk membiarkan GDB menampilkan nilai penghitung loop dan argumen yang ditampilkan saat ini setelah setiap langkah:
(gdb) set args arg1 arg2 arg3 (gdb) start Temporary breakpoint 1 at 0x8048426: file test.cpp, line 5. Starting program: /home/bazis/test arg1 arg2 arg3 Temporary breakpoint 1, main (argc=4, argv=0xbffff024) at test.cpp:5 5 for(int i = 0; i < argc; i++) (gdb) next 6 printf("Arg %d: %si, argv[i]); (gdb) display/x i 1: /x i = 0x0 (gdb) display argv[i] 2: argv[i] = 0xbffff204 "/home/bazis/test" (gdb) next Arg 0: /home/bazis/test 5 for(int i = 0; i < argc; i++) 2: argv[i] = 0xbffff204 "/home/bazis/test" 1: /x i = 0x0 (gdb) next 6 printf("Arg %d: %si, argv[i]); 2: argv[i] = 0xbffff215 "arg1" 1: /x i = 0x1 (gdb) display 2: argv[i] = 0xbffff215 "arg1" 1: /x i = 0x1 (gdb) undisplay 1 (gdb) next Arg 1: arg1 5 for(int i = 0; i < argc; i++) 2: argv[i] = 0xbffff215 "arg1" (gdb) next 6 printf("Arg %d: %si, argv[i]); 2: argv[i] = 0xbffff21a "arg2" (gdb) undisplay Delete all auto-display expressions? (y or n) y (gdb) next Arg 2: arg2 5 for(int i = 0; i < argc; i++) (gdb) next 6 printf("Arg %d: %si, argv[i]); (gdb) print i $1 = 3