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

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