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