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:
#includevoid 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