perintah backtrace

Menampilkan tumpukan panggilan untuk utas yang saat ini dipilih.

Sintaks

backtrace
backtrace [Jumlah Frame]
backtrace full [Jumlah Frame]
bt
bt [Jumlah Frame]
bt full [Jumlah Frame]

Parameter

Jumlah Frame
Menentukan jumlah frame yang akan ditampilkan. Jika angka ini positif, GDB akan menampilkan jumlah frame terdalam yang ditentukan. Jika negatif, GDB akan menampilkan jumlah frame terluar yang ditentukan. Jika tidak ada jumlah frame yang ditentukan, GDB akan menampilkan jumlah frame default yang dikonfigurasi menggunakan perintah set backtrace limit.
full
Jika ditentukan, perintah backtrace akan menampilkan informasi tentang variabel lokal untuk setiap frame.

Catatan

Tumpukan panggilan (juga dikenal sebagai backtrace) adalah informasi tentang fungsi saat ini, fungsi yang memanggilnya, fungsi yang memanggil fungsi pemanggil, dan seterusnya. Lihat contoh di bawah untuk lebih jelasnya.

Contoh

Kami akan menunjukkan cara kerja perintah backtrace menggunakan contoh berikut:

#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; }

Dalam contoh ini, main() memanggil test(5), test(5) memanggil test(4) dan seterusnya sampai test(0) memanggil level0(). Kami akan menempatkan breakpoint di level0() dan menampilkan backtrace yang akan menunjukkan rantai fungsi dari level0() terdalam hingga main() terluar:

(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) backtrace full #0 level0 () at recursion.cpp:5 No locals. #1 0x08048462 in test (level=0) at recursion.cpp:17 No locals. #2 0x0804845b in test (level=1) at recursion.cpp:14 prevLevel = 0 #3 0x0804845b in test (level=2) at recursion.cpp:14 prevLevel = 1 #4 0x0804845b in test (level=3) at recursion.cpp:14 prevLevel = 2 #5 0x0804845b in test (level=4) at recursion.cpp:14 prevLevel = 3 #6 0x0804845b in test (level=5) at recursion.cpp:14 prevLevel = 4 #7 0x08048479 in main () at recursion.cpp:22 No locals. (gdb) backtrace 2 #0 level0 () at recursion.cpp:5 #1 0x08048462 in test (level=0) at recursion.cpp:17 (More stack frames follow...) (gdb) backtrace -2 #6 0x0804845b in test (level=5) at recursion.cpp:14 #7 0x08048479 in main () at recursion.cpp:22