Perintah set stop-on-solib-events
Menentukan apakah GDB harus berhenti ketika sebuah shared library dimuat atau dimuat ulang.
Sintaksis
set stop-on-solib-events 0
set stop-on-solib-events 1
show stop-on-solib-events
set stop-on-solib-events 1
show stop-on-solib-events
Mode
- 0
- GDB tidak akan berhenti ketika sebuah shared library dimuat atau dimuat ulang. GDB akan secara otomatis memperbarui breakpoint Anda dan melanjutkan eksekusi.
- 1
- Ketika sebuah shared library dimuat atau dimuat ulang, GDB akan berhenti seolah-olah sebuah breakpoint telah tercapai. Anda akan memiliki kesempatan untuk memeriksa library yang dimuat, mengubah breakpoint Anda, dan melanjutkan eksekusi.
Nilai Default
Nilai default untuk variabel stop-on-solib-events adalah 0.
Contoh
Pada contoh ini, kita akan melakukan debugging sebuah shared library sederhana:
#include
int func()
{
printf("Di dalam func()\n");
return 0;
}
Kita akan menggunakan program sederhana untuk menguji library kita:
#include
int func();
int main()
{
printf("Di dalam main()\n");
func();
return 0;
}
Kita akan membangun aplikasi dan library:
cd /home/testuser/libtest
g++ -ggdb -fPIC -shared lib.cpp -o libTest.so
g++ -ggdb main.cpp libTest.so -o testApp -Wl,--rpath='$ORIGIN'
Lalu kita akan menjalankan GDB dan mengaktifkan opsi set stop-on-solib-events:
cd /home/testuser/libtest
gdb testApp
Perhatikan bagaimana GDB akan berhenti ketika ld-linux.so dan libTest.so dimuat:
GNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
Ini adalah perangkat lunak bebas: Anda dapat mengubah dan mendistribusikannya.
TIDAK ADA JAMINAN, sejauh yang diizinkan oleh hukum. Ketik "show copying"
dan "show warranty" untuk detailnya.
GDB ini dikonfigurasi sebagai "i686-linux-gnu".
Untuk instruksi pelaporan bug, silakan lihat:
Reading symbols from /home/testuser/libtest/testApp...done.
(gdb) show stop-on-solib-events
Berhenti untuk peristiwa shared library adalah 0.
(gdb) set stop-on-solib-events 1
(gdb) run
Memulai program: /home/testuser/libtest/testApp
Berhenti karena peristiwa shared library
(gdb) info shared
From To Syms Read Shared Object Library
0xb7fde820 0xb7ff6b9f Yes (*) /lib/ld-linux.so.2
(*): Shared library is missing debugging information.
(gdb) continue
Melanjutkan.
Berhenti karena peristiwa shared library
(gdb) info shared
From To Syms Read Shared Object Library
0xb7fde820 0xb7ff6b9f Yes (*) /lib/ld-linux.so.2
0xb7fd83a0 0xb7fd84c8 Yes /home/testuser/libtest/libTest.so
0xb7e35f10 0xb7f6635c Yes (*) /lib/i386-linux-gnu/libc.so.6
(*): Shared library is missing debugging information.
(gdb) continue
Melanjutkan.
Di dalam main()
Di dalam func()
[Inferior 1 (process 5936) exited normally]
(gdb) quit