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

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