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
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