perintah select-frame
Memilih bingkai (frame) stack secara diam-diam.
Sintaks
select-frame [Nomor Frame]
Parameter
- Nomor Frame
- Menentukan nomor frame berbasis nol yang akan dipilih sebagai hasil dari menjalankan perintah ini.
Catatan
Perintah ini mengubah frame yang dipilih tanpa menampilkan informasi tambahan apapun. Jika Anda ingin menampilkan nomor frame yang sedang dipilih saat ini, gunakan perintah frame.
Perhatikan bahwa frame yang dipilih saat ini memengaruhi output dari perintah info args, info locals, dan info frame.
Contoh
Kami akan mengilustrasikan perintah select-frame menggunakan fungsi rekursif di bawah ini:
#include
void level0()
{
printf("Mencapai 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 pada fungsi level0() dan menggunakan perintah select-frame untuk memilih stack frame yang berbeda secara diam-diam. Perhatikan bahwa berbeda dengan perintah frame, perintah select-frame tidak menghasilkan output:
(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("Mencapai level 0\n");
(gdb) info locals
No locals.
(gdb) select-frame 1
(gdb) info locals
No locals.
(gdb) select-frame 2
(gdb) info locals
prevLevel = 0
(gdb) select-frame 3
(gdb) info locals
prevLevel = 1
(gdb) select-frame 4
(gdb) info locals
prevLevel = 2
(gdb) frame
#4 0x0804845b in test (level=3) at recursion.cpp:14
14 test(prevLevel);