Perintah up
Memilih bingkai tumpukan sebelumnya (luar) atau salah satu bingkai yang mendahuluinya.
Sintaks
up
up [Jumlah bingkai]
up [Jumlah bingkai]
Parameter
- Jumlah bingkai
- Jika parameter ini diberikan, perintah up akan naik N bingkai di mana N adalah jumlah yang ditentukan di sini. Jika parameter ini tidak ada, perintah up akan naik satu bingkai.
Catatan
Gunakan perintah backtrace untuk menampilkan semua bingkai yang tersedia. Gunakan perintah frame untuk memilih bingkai berdasarkan nomor.
Catatan bahwa bingkai yang saat ini dipilih memengaruhi keluaran dari perintah info args, info locals dan info frame.
Contoh
Kami akan mengilustrasikan penggunaan perintah up menggunakan fungsi rekursif di bawah ini:
#includevoid level0() { printf("Tercapai 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 up untuk menavigasi jejak tumpukan ke atas.
(gdb) b level0 Breakpoint 1 di 0x804841a: file recursion.cpp, line 5. (gdb) r Starting program: /home/testuser/recursionDemo Level 5 Level 4 Level 3 Level 2 Level 1 Breakpoint 1, level0 () at recursion.cpp:5 5 printf("Tercapai level 0\n"); (gdb) frame #0 level0 () at recursion.cpp:5 5 printf("Tercapai level 0\n"); (gdb) up #1 0x08048462 di test (level=0) di recursion.cpp:17 17 level0(); (gdb) up #2 0x0804845b di test (level=1) di recursion.cpp:14 14 test(prevLevel); (gdb) up 3 #5 0x0804845b di test (level=4) di recursion.cpp:14 14 test(prevLevel); (gdb) print prevLevel $1 = 3 (gdb) up #6 0x0804845b di test (level=5) di recursion.cpp:14 14 test(prevLevel); (gdb) print prevLevel $2 = 4 (gdb) up #7 0x08048479 di main () di recursion.cpp:22 22 test(5); (gdb) up Bingkai awal dipilih; Anda tidak dapat naik lebih tinggi. (gdb)