Perintah set print frame-arguments

Menentukan jenis argumen untuk yang backtrace akan menampilkan nilai-nilainya.

Sintaksis

set print frame-arguments all
set print frame-arguments scalar
set print frame-arguments none
show print frame-arguments

Mode

all
Dalam mode ini, perintah backtrace akan menampilkan nilai argumen untuk semua jenis argumen termasuk struktur.
scalar
Dalam mode ini, perintah backtrace hanya akan menampilkan nilai argumen untuk argumen skalar (termasuk pointer dan string C).
none
Dalam mode ini, perintah backtrace tidak akan menampilkan nilai untuk semua argumen.

Mode Default

Nilai default untuk pengaturan print frame-arguments adalah scalar.

Contoh

Untuk mengilustrasikan perintah set print frame-arguments, kita akan menggunakan program C++ sederhana yang memiliki sebuah fungsi yang menerima 2 argumen skalar dan satu argumen struktur:

                        
struct CompositeStruct     
{     
    int Field1, Field2;     
};     

void testfunc(int arg1, const char *arg2, CompositeStruct arg3)     
{     
    asm("int3"); // Breakpoint terpaksa     
}     

int main(int argc, char **argv)     
{     
    CompositeStruct test = {1, 2};     
    testfunc(123, "test", test);     
    return 0;     
}     
                        
                    

Kita akan menjalankan program sampai mencapai breakpoint di dalam testfunc() dan kemudian menggunakan perintah backtrace untuk menampilkan frame dan nilai-nilai argumen untuk setiap frame:

                        
(gdb) run     
Starting program: /home/bazis/test      
     
Program received signal SIGTRAP, Trace/breakpoint trap.     
testfunc (arg1=123, arg2=0x80484d0 "test", arg3=...) at test.cpp:11     
11      }     
(gdb) backtrace     
#0  testfunc (arg1=123, arg2=0x80484d0 "test", arg3=...) at test.cpp:11     
#1  0x0804842d in main (argc=1, argv=0xbffff034) at test.cpp:16     
(gdb) show print frame-arguments     
Pencetakan argumen frame non-scalar adalah "skalar".     
(gdb) set print frame-arguments all     
(gdb) backtrace     
#0  testfunc (arg1=123, arg2=0x80484d0 "test", arg3={Field1 = 1, Field2 = 2}) at test.cpp:11     
#1  0x0804842d in main (argc=1, argv=0xbffff034) at test.cpp:16     
(gdb) set print frame-arguments none     
(gdb) backtrace     
#0  testfunc (arg1=..., arg2=..., arg3=...) at test.cpp:11     
#1  0x0804842d in main (argc=..., argv=...) at test.cpp:16