perintah restart
Beralih sesi debugging ke checkpoint yang ditentukan
Sintaks
restart [Nomor checkpoint]
restart 0
restart 0
Parameter
- Nomor checkpoint
- Menentukan nomor dari checkpoint yang sebelumnya dibuat menggunakan perintah checkpoint. Jika disebutkan 0, GDB akan beralih untuk melakukan debugging pada proses asli.
Catatan
Catatan bahwa sebuah checkpoint adalah cabang eksekusi lain (fork), bukan snapshot. Jika Anda beralih ke suatu checkpoint tertentu dan melanjutkan eksekusi dari sana, status checkpoint akan diperbarui juga. Jika Anda ingin melanjutkan dari suatu checkpoint sambil mempertahankan status checkpoint, buatlah checkpoint lain sebelum melanjutkan dari yang lain.
Contoh
Kami akan menunjukkan penggunaan perintah restart menggunakan program C++ sederhana yang mengiterasi dari 0 hingga 9 dan menampilkan pesan pada setiap iterasinya:
#include <stdio.h>
int main(int argc, char **argv)
{
for (int i = 0; i < argc; i++)
printf("Arg %d: %s\n", i, argv[i]);
return 0;
}
Kami akan membuat beberapa checkpoint pada tahap-tahap yang berbeda dari eksekusi dan menggunakan perintah info checkpoints untuk menampilkan informasi tentang mereka.
(gdb) start
Temporary breakpoint 1 at 0x804847a: file test.cpp, line 11.
Starting program: /home/bazis/test
Temporary breakpoint 1, main (argc=1, argv=0xbffff064) at test.cpp:11
11 for (int i = 0; i < 10; i++)
(gdb) next
12 report(i);
(gdb) set variable i = 5
(gdb) checkpoint
checkpoint: fork returned pid 2113.
(gdb) step
report (iteration=5) at test.cpp:6
6 printf("Pid %d, iteration %dgetpid(), iteration);
(gdb) break
Breakpoint 2 at 0x8048453: file test.cpp, line 6.
(gdb) continue
Continuing.
Pid 2109, iteration 5
Breakpoint 2, report (iteration=6) at test.cpp:6
6 printf("Pid %d, iteration %dgetpid(), iteration);
(gdb) continue 3
Will ignore next 2 crossings of breakpoint 2. Continuing.
Pid 2109, iteration 6
Pid 2109, iteration 7
Pid 2109, iteration 8
Breakpoint 2, report (iteration=9) at test.cpp:6
6 printf("Pid %d, iteration %dgetpid(), iteration);
(gdb) restart 1
Switching to process 2113
#0 main (argc=1, argv=0xbffff064) at test.cpp:12
12 report(i);
(gdb) next
Breakpoint 2, report (iteration=5) at test.cpp:6
6 printf("Pid %d, iteration %dgetpid(), iteration);
(gdb) restart 0
Switching to process 2109
#0 report (iteration=9) at test.cpp:6
6 printf("Pid %d, iteration %dgetpid(), iteration);
(gdb) restart 1
Switching to process 2113
#0 report (iteration=5) at test.cpp:6
6 printf("Pid %d, iteration %dgetpid(), iteration);