Perintah set multiple-symbols
Mengontrol bagaimana GDB menangani beberapa breakpoint.
Sintaksis
set multiple-symbols all
set multiple-symbols ask
set multiple-symbols cancel
show multiple-symbols
set multiple-symbols ask
set multiple-symbols cancel
show multiple-symbols
Mode
- all
- Ketika ekspresi yang ditentukan untuk perintah break menghasilkan lebih dari satu lokasi kode, GDB akan membuat breakpoint untuk semua lokasi yang terdeteksi.
- ask
- Ketika ekspresi yang ditentukan untuk perintah break menghasilkan lebih dari satu lokasi kode, GDB akan menampilkan daftar lokasi yang terdeteksi dan memungkinkan pengguna memilih lokasi mana yang akan diatur breakpoint.
- cancel
- Ketika ekspresi yang ditentukan untuk perintah break menghasilkan lebih dari satu lokasi kode, GDB akan membatalkan pembuatan breakpoint.
Mode Default
Nilai default untuk pengaturan multiple-symbols adalah 'all'.
Contoh
Kami akan menunjukkan penggunaan perintah set multiple-symbols menggunakan program C++ sederhana yang berisi 2 overload dari fungsi test. Menetapkan breakpoint pada test akan menghasilkan dua fungsi:
#include
void test(int)
{
printf("test(int) dipanggil\n");
}
void test(int, int)
{
printf("test(int, int) dipanggil\n");
}
int main()
{
test(1);
test(1, 2);
return 0;
}
Berikut hasil dari menjalankan perintah break pada fungsi test menggunakan berbagai mode multiple-symbols:
(gdb) show multiple-symbols
Bagaimana debugger menangani ambigu dalam ekspresi adalah "all".
(gdb) break test
Breakpoint 1 at 0x80483da: test. (2 lokasi)
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y <MULTIPLE>
1.1 y 0x080483da in test(int) di test.cpp:5
1.2 y 0x080483ee in test(int, int) di test.cpp:10
(gdb) delete
Hapus semua breakpoint? (y atau n) y
(gdb) set multiple-symbols ask
(gdb) break test
[0] cancel
[1] all
[2] test.cpp:test(int)
[3] test.cpp:test(int, int)
> 2 3
Breakpoint 2 at 0x80483da: file test.cpp, baris 5.
Breakpoint 3 at 0x80483ee: file test.cpp, baris 10.
Peringatan: Beberapa breakpoint telah diatur.
Gunakan perintah "delete" untuk menghapus breakpoint yang tidak diinginkan.
(gdb) info breakpoints
Num Type Disp Enb Address What
2 breakpoint keep y 0x080483da in test(int) di test.cpp:5
3 breakpoint keep y 0x080483ee in test(int, int) di test.cpp:10
(gdb) delete
Hapus semua breakpoint? (y atau n) y
(gdb) set multiple-symbols cancel
(gdb) break test
dibatalkan karena perintah ambigu
Lihat set/show multiple-symbol.
(gdb) break test(int)
Breakpoint 4 at 0x80483da: file test.cpp, baris 5.