Perintah down

Mengatur frame tumpukan (stack frame) berikutnya (inner) atau salah satu frame yang mengikutinya.

Sintaks

down
down [Jumlah frame]

Parameter

Jumlah frame
Jika parameter ini diberikan, perintah down akan turun sebanyak N frame dimana N adalah jumlah yang ditentukan di sini. Jika parameter ini tidak disertakan, perintah down akan turun satu frame.

Catatan

Gunakan perintah backtrace untuk menampilkan semua frame yang tersedia. Gunakan perintah frame untuk memilih frame berdasarkan nomor.

Perhatikan bahwa frame yang saat ini dipilih mempengaruhi output dari perintah info args, info locals, dan info frame.

Contoh

Kami akan menjelaskan perintah down menggunakan fungsi rekursif di bawah ini:

#include <stdio.h> 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 pada fungsi level0() dan menggunakan perintah down untuk menavigasi melalui frame-stack dalam trace stack.

(gdb) b level0 Breakpoint 1 at 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("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) down Bottom (innermost) frame selected; kamu tidak bisa turun lagi. (gdb) frame 7 #7 0x08048479 in main () at recursion.cpp:22 22 test(5); (gdb) down #6 0x0804845b in test (level=5) at recursion.cpp:14 14 test(prevLevel); (gdb) print prevLevel $1 = 4 (gdb) down 3 #3 0x0804845b in test (level=2) at recursion.cpp:14 14 test(prevLevel); (gdb) print prevLevel $2 = 1 (gdb) down #2 0x0804845b in test (level=1) at recursion.cpp:14 14 test(prevLevel); (gdb) down #1 0x08048462 in test (level=0) at recursion.cpp:17 17 level0(); (gdb) down #0 level0 () at recursion.cpp:5 5 printf("Reached level 0\n"); (gdb) down Bottom (innermost) frame selected; kamu tidak bisa turun lagi.