perintah set auto-solib-add

Menentukan apakah GDB harus secara otomatis memuat simbol saat mendeteksi bahwa sebuah pustaka bersama telah dimuat.

Sintaks

set auto-solib-add on
set auto-solib-add off
show auto-solib-add

Mode

on
Dalam mode ini, GDB akan secara otomatis memuat simbol-simbol saat mendeteksi bahwa sebuah pustaka bersama telah dimuat.
off
Dalam mode ini, GDB tidak akan secara otomatis memuat simbol-simbol untuk pustaka bersama yang baru dimuat. Anda dapat memuat simbol-simbol secara manual menggunakan perintah sharedlibrary.

Nilai Default

Nilai default untuk variabel auto-solib-add adalah on.

Contoh

Pada contoh ini, kita akan melakukan debug pada program sederhana yang memuat dan membebaskan (unload) sebuah pustaka bersama secara berulang:

                        
#include 
#include 

int main()
{
    for (int i = 0; i < 5; i++)
    {
        void *p = dlopen("./libTest.so", RTLD_NOW);
        printf("Loaded library\n");
        dlclose(p);
        printf("Unloaded library\n");
    }
    return 0;
}
                        
                    

Contoh berikut menunjukkan bagaimana perintah set auto-solib-add dapat menonaktifkan pembebanan simbol secara otomatis yang biasanya dilakukan oleh GDB:

                        
(gdb) break 8
Breakpoint 1 at 0x80484b7: file main.cpp, line 8.
(gdb) run
Starting program: /home/testuser/libtest/testApp

Breakpoint 1, main () at main.cpp:8
8  void *p = dlopen("./libTest.so", RTLD_NOW);
(gdb) info shared
From        To          Syms Read   Shared Object Library
0xb7fde820  0xb7ff6b9f  Yes         /lib/ld-linux.so.2
0xb7fc2a60  0xb7fc3a08  Yes         /lib/i386-linux-gnu/libdl.so.2
0xb7e2ef10  0xb7f635cc  Yes         /lib/i386-linux-gnu/libc.so.6
(gdb) next
9  printf("Loaded library\n");
(gdb) info shared
From        To          Syms Read   Shared Object Library
0xb7fde820  0xb7ff6b9f  Yes         /lib/ld-linux.so.2
0xb7fc2a60  0xb7fc3a08  Yes         /lib/i386-linux-gnu/libdl.so.2
0xb7e2ef10  0xb7f635cc  Yes         /lib/i386-linux-gnu/libc.so.6
0xb7fd83a0  0xb7fd84c8  Yes         ./libTest.so
(gdb) continue
Continuing.
Loaded library
Unloaded library

Breakpoint 1, main () at main.cpp:8
8  void *p = dlopen("./libTest.so", RTLD_NOW);
(gdb) info shared
From        To          Syms Read   Shared Object Library
0xb7fde820  0xb7ff6b9f  Yes         /lib/ld-linux.so.2
0xb7fc2a60  0xb7fc3a08  Yes         /lib/i386-linux-gnu/libdl.so.2
0xb7e2ef10  0xb7f635cc  Yes         /lib/i386-linux-gnu/libc.so.6
(gdb) set auto-solib-add off
(gdb) next
9  printf("Loaded library\n");
(gdb) info shared
From        To          Syms Read   Shared Object Library
0xb7fde820  0xb7ff6b9f  Yes         /lib/ld-linux.so.2
0xb7fc2a60  0xb7fc3a08  Yes         /lib/i386-linux-gnu/libdl.so.2
0xb7e2ef10  0xb7f635cc  Yes         /lib/i386-linux-gnu/libc.so.6
0xb7fd83a0  0xb7fd84c8  No          ./libTest.so
(gdb) sharedlibrary
Reading symbols from ./libTest.so...done.
Loaded symbols for ./libTest.so
(gdb) info shared
From        To          Syms Read   Shared Object Library
0xb7fde820  0xb7ff6b9f  Yes         /lib/ld-linux.so.2
0xb7fc2a60  0xb7fc3a08  Yes         /lib/i386-linux-gnu/libdl.so.2
0xb7e2ef10  0xb7f635cc  Yes         /lib/i386-linux-gnu/libc.so.6
0xb7fd83a0  0xb7fd84c8  Yes         ./libTest.so