Perintah frame
Pilih suatu frame stack atau tampilkan frame stack yang sedang dipilih.
Sintaks
frame
frame [Nomor Frame]
f
f [Nomor Frame]
frame [Nomor Frame]
f
f [Nomor Frame]
Parameter
- Nomor Frame
- Menentukan nomor frame berbasis nol yang akan dipilih sebagai hasil dari menjalankan perintah ini. Jika tidak ada nomor frame yang ditentukan, perintah ini akan menampilkan frame yang saat ini dipilih.
Catatan
Perintah frame menampilkan informasi singkat tentang frame yang dipilih setelah memilihnya. Jika Anda ingin menghindari hal ini, gunakan perintah select-frame yang merupakan versi diam dari perintah frame.
Perhatikan bahwa frame yang saat ini dipilih mempengaruhi output dari perintah info args, info locals dan info frame.
Contoh
Kami akan menjelaskan perintah frame menggunakan fungsi rekursif di bawah ini:
#include
void level0()
{
printf("Reached level 0\n");
}
void test(int level)
{
if (level > 0)
{
int prevLevel = level - 1;
printf("Level %d\n", level);
test(prevLevel);
}
else
level0();
}
int main()
{
test(5);
return 0;
}
Kami akan menetapkan breakpoint di fungsi level0() dan menggunakan perintah frame untuk memilih berbagai frame stack dan menampilkan berbagai informasi tentang mereka.
(gdb) b level0
Breakpoint 1 at 0x804841a: file recursion.cpp, line 5.
(gdb) run
Starting program: /home/testuser/recursionDemo
Level 5
Level 4
Level 3
Level 2
Level 1
Breakpoint 1, level0 () at recursion.cpp:5
5 printf("Reached level 0\n");
(gdb) backtrace
#0 level0 () at recursion.cpp:5
#1 0x08048462 in test (level=0) at recursion.cpp:17
#2 0x0804845b in test (level=1) at recursion.cpp:14
#3 0x0804845b in test (level=2) at recursion.cpp:14
#4 0x0804845b in test (level=3) at recursion.cpp:14
#5 0x0804845b in test (level=4) at recursion.cpp:14
#6 0x0804845b in test (level=5) at recursion.cpp:14
#7 0x08048479 in main () at recursion.cpp:22
(gdb) frame
#0 level0 () at recursion.cpp:5
5 printf("Reached level 0\n");
(gdb) info args
No arguments.
(gdb) frame 1
#1 0x08048462 in test (level=0) at recursion.cpp:17
17 level0();
(gdb) info args
level = 0
(gdb) frame 2
#2 0x0804845b in test (level=1) at recursion.cpp:14
14 test(prevLevel);
(gdb) info args
level = 1